From 18efd056fef83286591385794ad0dd9bac61a917 Mon Sep 17 00:00:00 2001 From: Wallace Date: Thu, 15 Aug 2024 10:05:37 -0500 Subject: [PATCH 01/40] added SIM_singlerigidbody --- .../SIM_singlerigidbody/Images/AccOmega.png | Bin 0 -> 1334 bytes .../SIM_singlerigidbody/Images/Angle.png | Bin 0 -> 3211 bytes .../Images/Angularvelocity.png | Bin 0 -> 3445 bytes .../Images/Centerofmass.png | Bin 0 -> 1890 bytes .../Images/EquationsofMotion.png | Bin 0 -> 7102 bytes .../SIM_singlerigidbody/Images/Force.png | Bin 0 -> 1647 bytes .../Images/ForceTorque.png | Bin 0 -> 886 bytes .../Images/ForceTorqueRemain.png | Bin 0 -> 3401 bytes .../SIM_singlerigidbody/Images/Inertia.png | Bin 0 -> 1863 bytes .../SIM_singlerigidbody/Images/Mass.png | Bin 0 -> 2065 bytes .../SIM_singlerigidbody/Images/MassMatrix.png | Bin 0 -> 2953 bytes .../SIM_singlerigidbody/Images/Position.png | Bin 0 -> 3476 bytes .../SIM_singlerigidbody/Images/Radius.png | Bin 0 -> 1696 bytes .../SIM_singlerigidbody/Images/Torque.png | Bin 0 -> 2917 bytes .../SIM_singlerigidbody/Images/Vectora.png | Bin 0 -> 1493 bytes .../SIM_singlerigidbody/Images/Velocity.png | Bin 0 -> 3279 bytes .../SIM_singlerigidbody/Images/koviz.png | Bin 0 -> 160434 bytes .../SIM_singlerigidbody/Images/trick-dp.png | Bin 0 -> 90375 bytes .../Modified_data/realtime.py | 12 + .../Modified_data/state_data.dr | 54 + trick_sims/SIM_singlerigidbody/README.md | 167 + .../SIM_singlerigidbody/RUN_test/input.py | 81 + trick_sims/SIM_singlerigidbody/S_define | 30 + trick_sims/SIM_singlerigidbody/S_overrides.mk | 2 + .../models/include/body.hh | 75 + .../SIM_singlerigidbody/models/src/body.cpp | 353 + .../sims/.trick/__init__.py | 51 + .../sims/.trick/exception.py | 33 + .../m2ddd17f9284f93dc40b8a127bd142ae5.py | 1213 ++ .../me18dda184e7a3a5300b5efa2b558f756.py | 395 + .../sims/.trick/shortcuts.py | 138 + .../sims/.trick/sim_services.py | 13728 ++++++++++++++++ .../sims/.trick/swig_double.py | 238 + .../sims/.trick/swig_int.py | 301 + .../sims/.trick/swig_ref.py | 132 + .../SIM_singlerigidbody/sims/.trick/top.py | 109 + .../sims/.trick/unit_test.py | 72 + .../sims/Modified_data/realtime.py | 12 + .../sims/Modified_data/state_data.dr | 54 + trick_sims/SIM_singlerigidbody/sims/README.md | 168 + .../sims/SET_test/RUN_1/input.py | 81 + trick_sims/SIM_singlerigidbody/sims/S_define | 30 + .../SIM_singlerigidbody/sims/S_overrides.mk | 24 + .../sims/images/AccOmega.png | Bin 0 -> 1334 bytes .../SIM_singlerigidbody/sims/images/Angle.png | Bin 0 -> 3211 bytes .../sims/images/Angularvelocity.png | Bin 0 -> 3445 bytes .../sims/images/Centerofmass.png | Bin 0 -> 1890 bytes .../sims/images/EquationsofMotion.png | Bin 0 -> 7102 bytes .../SIM_singlerigidbody/sims/images/Force.png | Bin 0 -> 1647 bytes .../sims/images/ForceTorque.png | Bin 0 -> 886 bytes .../sims/images/ForceTorqueRemain.png | Bin 0 -> 3401 bytes .../sims/images/Inertia.png | Bin 0 -> 1863 bytes .../SIM_singlerigidbody/sims/images/Mass.png | Bin 0 -> 2065 bytes .../sims/images/MassMatrix.png | Bin 0 -> 2953 bytes .../sims/images/Position.png | Bin 0 -> 3476 bytes .../sims/images/Radius.png | Bin 0 -> 1696 bytes .../sims/images/Torque.png | Bin 0 -> 2917 bytes .../sims/images/Vectora.png | Bin 0 -> 1493 bytes .../sims/images/Velocity.png | Bin 0 -> 3279 bytes .../SIM_singlerigidbody/sims/images/koviz.png | Bin 0 -> 160434 bytes .../sims/images/trick-dp.png | Bin 0 -> 90375 bytes trick_sims/SIM_singlerigidbody/sims/trick.zip | Bin 0 -> 217349 bytes 62 files changed, 17553 insertions(+) create mode 100644 trick_sims/SIM_singlerigidbody/Images/AccOmega.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Angle.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Angularvelocity.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Centerofmass.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/EquationsofMotion.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Force.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/ForceTorque.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/ForceTorqueRemain.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Inertia.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Mass.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/MassMatrix.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Position.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Radius.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Torque.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Vectora.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/Velocity.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/koviz.png create mode 100644 trick_sims/SIM_singlerigidbody/Images/trick-dp.png create mode 100644 trick_sims/SIM_singlerigidbody/Modified_data/realtime.py create mode 100644 trick_sims/SIM_singlerigidbody/Modified_data/state_data.dr create mode 100644 trick_sims/SIM_singlerigidbody/README.md create mode 100644 trick_sims/SIM_singlerigidbody/RUN_test/input.py create mode 100644 trick_sims/SIM_singlerigidbody/S_define create mode 100644 trick_sims/SIM_singlerigidbody/S_overrides.mk create mode 100644 trick_sims/SIM_singlerigidbody/models/include/body.hh create mode 100644 trick_sims/SIM_singlerigidbody/models/src/body.cpp create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/exception.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/top.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr create mode 100644 trick_sims/SIM_singlerigidbody/sims/README.md create mode 100644 trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py create mode 100644 trick_sims/SIM_singlerigidbody/sims/S_define create mode 100644 trick_sims/SIM_singlerigidbody/sims/S_overrides.mk create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/AccOmega.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Angle.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Angularvelocity.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Centerofmass.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/EquationsofMotion.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Force.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/ForceTorque.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/ForceTorqueRemain.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Inertia.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Mass.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/MassMatrix.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Position.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Radius.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Torque.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Vectora.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Velocity.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/koviz.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/images/trick-dp.png create mode 100644 trick_sims/SIM_singlerigidbody/sims/trick.zip diff --git a/trick_sims/SIM_singlerigidbody/Images/AccOmega.png b/trick_sims/SIM_singlerigidbody/Images/AccOmega.png new file mode 100644 index 0000000000000000000000000000000000000000..b464863e605f13b082c3bf379ea2bd03df87e6c1 GIT binary patch literal 1334 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 XFAP~xc?6tu00000NkvXXu0mjfNHNzM literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/Centerofmass.png b/trick_sims/SIM_singlerigidbody/Images/Centerofmass.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab5ebe778f10ed8d134ca79d8a21b75c7c48bf2 GIT binary patch literal 1890 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/ForceTorque.png b/trick_sims/SIM_singlerigidbody/Images/ForceTorque.png new file mode 100644 index 0000000000000000000000000000000000000000..168af35f1e01a04834bc2637ae9ec8b0e27359b8 GIT binary patch literal 886 zcmV-+1Bv{JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&0}Dw+K~!i%?V7zy za#0+|zdo4-E>RIi(NIf+3DzPlRul~lEfS(cWT;BYu7%BSR=dU|@o)zuZo z$H%{pv9U2~t&EY8k-Y2N-Q6LXOj2tR)H_v-lamvryStkreHj=SP&PL=DJn!JIxkfz zWu&ua*4Earx3`CfhX?j+YG`O+^)D|kETI#L1p7=+PY49 z<~?RGP>CO5sl&rV*ladjUS6_eeSIB$eSOrb4I!!b_ji_0Q&Urzn3%xy^fcUVciyAa zf{>J&Pj7E;c@q8o{b+4%rAQk>QffYRb#NT#fy~UMN07^rFfB2yhtftq!ceD*E~;8 zPcb_?%Z9tgwt=b&~3~@ALCBMOmy?E8CMUhWu9$FH(vZDa8ly8~57=QJp0!>;M1& M07*qoM6N<$f}cH^wEzGB literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/ForceTorqueRemain.png b/trick_sims/SIM_singlerigidbody/Images/ForceTorqueRemain.png new file mode 100644 index 0000000000000000000000000000000000000000..528594f014b4deb921d1a4c9c2908c603b5cbdaa GIT binary patch literal 3401 zcmV-P4Yu-$P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&4BkmZK~#8N?VSmb zOh*{UTg0-l#IXt$g2Wxxu_7qK7Al35h?2@WVqJx}#l|Mia+X_>geXA}M~-!~sC6#Z zS&3K@HwiWovNnnP==8tmd*;oXH?wn@@kaluruKdPW_G4uf3N%dzV7~BE-qjSg~fS} z{wfrfMk%r)EHE`KPMkQwl9G~0vQe~XQTFxMUz4OzJUIpo7{Jb-KTnd4;lqcsdiCm& zXaD>|!CJXxAIZ|&`{}2j*o6xhs3iD2di020x^&5@J~waPq$A&%JbAKgCnM?U>1^}n%_R9pNEG?( z*|Tijx^=8svu0G{J1bVKV4r;QNzfHJIXRg{L`1MMWy(;AZ@@*_vu6+M+_`f|ZpOQJ z@3N62N3st-_<()?{r7D5?%izs`0*?)EsY&Jc8pD#GKJphI~_ZAWS@TeDM@zf*RRhG zA3n^E9z9AWegJ3Bh`6x4a^=b-1s>sva$ygW}hhM#VmG9rbpU1?+P-$?$^%Kg(SFT)1C3e2};tO87bZIU+94hgTdGqG+ z)vH&NWas|<`@Bt?HvHkkhg9NBlO|30nl)=kGAHOg^1*`#S%nG}SpNL^sl+$LZ)e-K zZDX}-*OtSdxadLa(O}CaBqWgJJAeG~hwKqwc;N+BtXQ$2_Q(jYHg4RQ2?b;CzyCg! z+Ue4z3lldOYuKcmEj7{RJnuTG_o;O1)CvL!2AxGvgv=a5kC6t30e3d?XPv$C?}`8jju z@XX9iSuPwdK7IOhE|i*!o<)|`tXcE%d2sF8HEEL>xpL(SpEYY1NzMr8gU7|i$z#zQ z^4DH_jfhIU;Om*-4oZaA&V<*|JRhQ+D9M0oI~L3s$OBDLTVsS+{Q8*mKX> z{v{kR*lTdcG%zfg4SN`-VJm7RCMG(})aA{a*X@E4U%-^7s6Tt_t+&|n<;$hL?Fm+| zgBUsF-zrtA$iJ@8uWi732RP?wV@y10^%R|!bQ-aoK?8D)8Z}s+Jb9?ZPN71DnCP)d za>U&^Pw+~S(HLkjL<`{YY9N@72@WW^25g~PwQ5NxOam9gXa|X2MA}GtL=Ph?rhz!? zn{U2JQeeP$U?QS#-@a_pq)AkoGghwy>~LUa<7=Q3TDfv1NsL8CM#>vz$BrEi?T$&D zf&~joCr$&7FxEzxf$OHfCVJeR^8~M*JyZxzjlM!K?%@FGD}->07)s?a?qpEBcyTAM zT$n2kiUGMuks>77ZW1_2!rrD5|3Tx6A(<^(woC@<(YPOd^bwtPkJalC6B8pN2)GGc zfyfdjNc7ZA1fLUT7fH?pJZb^ZkXqXwf41(t`{8+i$;dF$7bI z?XzZ|e;PHxB{vw2!tnv50*CzeXhfwCDfYj;E|gjqq7BM7l+p;#E20jInuUmTetCVPZZf}8`)nF#lVaa zR*zYg*I$2KhM+>Z?9xiWM_RaWpepBq?0sDy)X^oV$q`ZwRR(D-?l3DY7CgP>QSw z3zQ-&!UCnpim*T_vI*JQ*>q%m!l^FqP>O7Tb1pYsVy&&!38%W`gi>S!m^#O7T{uiX zhf`g0LMgHitd+)WBi2%QvYR^sN>yldAkI_n#us!OO)imYSx>eZ}G zn>MUmxpG16#jwR^^ytwtuLY9VOqejiVF!*cgsLu~LMbwV-45uzknaK0&cW`*kP`$+ z{m?7>OQ`D-3X~!Xutf>`3XvHdTXZrrGd=3XPM$m|lcl)An@p2PC5GSOZ%^!NT`Z4W zm2BWiF02m**p-oykwKCp*ugMzs33M5O>C#CVVE>AO0<-+=4Fn|7hmpgJX++rOuc79{$ zF4oCn6Q{Tq^bRIdKi$87pUs^+*P+}95)Wd>ai2bYhon7!R~D2kn^`LmPb_12`l%=$hKpaCRGnI<9L!<%Tv(nAzha+HF*F2{hc;x z<^=XYA}y}CDX7HG=bwL0N9LrYq{!4|;mkAHBO^Ir>(;GFvSkKB)=53szF)CoMUwmn z4iyqPA^{7w+xP0#i_Un){{8z+?PH`~K-L~T-Me?EBOBO$9~&D>(z8q0DKe6wATy2z zJorkLDv@LZ?+Ntol!+53%4ZWI@&G5$8(>x-Uxq#f89)*heabN{-IX4gNJ^2zP?3$( zvFM@o%7C;_h^+<^VNS^J&}`HXKm5=s%Z@u-*~hpc^m_u4j!It_B;x+}-+wK=Wh_vH zogyQh6~a$wU_2WGe=)&;Mn@JP1!OBbU}a}-Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&2HZ(RK~#8N?VZm{ z6<-*}kKaEaHP>#`7D7;nnhOaOGRuvN!e1=}gRpfdC@q8*>Bdc{i`Lyh7b4vU1}Yip}2Dk?fCb#-;}`LAEU z^pzwmbPjs}VZD9(R@y^DL+aYKYtnx5|y62}DPZf^I=crBeEn zLq(ecz78e(Fi-duq^T2r+)%^UtJ~~QS zS($Dr_51g4-6CP2=weV(QleWV3=~~RR#sMYOR4tucHJUjpy)#K=+Psov3m8I^O2LG z%OnKPpFdY^ZEdQwv{YOw6%`fw3<(1*U53C}eCyUNY0u5gQE)M!=rRD&hugPrtG&HF zl}e>lV`HN}L!v;@od5)fP#A_&2#)i(_)v5waR2^&5!~qLC(?WpFT>NPPgPe}mxRnn zI4C*~?%usCDNJ@+lg-Y~j$DJ)EW0lP5FI(>`}glqQAWiXdiB35Tt0mGAamE++S-HP ztFp3EQn+#jSFbK+W@dEjba3(FMX~DREJaguZZsi7wjvNCECD7d5EOoYty?VtCDL3%m4-5?GBT`7fU3BTv zC7IXdYU5FCOZW5VPvxw3^brMD==AjTh~WIv^|L{2(ZO+ARaGTzh>wCRT;O|zrGwzS z9OBs`D|0&hM?p(Vi`1m>fZ#Bk=2~zdE21+SlP_PsEHx=C;Ezj6a3Hqm?2Rhb)z!L1 z3I+WA9zJ}i9zTA3L~zKI_F5!ngV>^5TU(PFlg|qmE=Zdk1sN-t_u`L;gitdb0kATD z=O764E|s%q&q|Vk7Z8ZK4)?;b0Y4kB$-p@j+eqMN_4f8k3>lFLa}5fPa|T={ae&tv zw~6DuwqMl{wd68Z7zgCynS4AG-^A-EoK^op-`T}niztEn913E?Hn#PPm;M zp~x|;8LSZ|_DGL+{zfXDPRlv)?7>{DxVTt8tEs6un5UWh!?WOsT+SO1 ziNO8+%C~Rd^p#o0xp`!ep@3VUEH5wXPl+F}9Ox@pWn+yDwzY@lLf_hC($B`S!Gap= zmyg5}oo$};^%o3-`CX!xAkaVNI*8BRU$*GnZ-cVat=z+_jS)49TeSH^tl@QOX-R75 zsY+z2UC6Ajuj`gl4<0-?)?e@6zn2qT8G z(V5sBR!9E=&O;ch1hKlhDm7O5Uc1T`78az&YSPWKXV0V#a=zQ5zH#G*ZsjMDMTaLV zTTWq2dhO+Ul#;WA!z}Uc-8-qh1P2!f+!o-Ou%bMi!lUvOwG?3rPZA!&R7) z&xr=ML$;xzLAMSu&Rj3Syn6LYY7EOk{Tw9fd?T{xrl+T+cKd$FaXx+eB(-1E#tffc z=l1varM9gchGtMatRcm46rxuMxO;^QP1Y z)St#=hqzF5F>!ARBqu}B#e@O>@KAIvkmU>4NYLukB(P!^90?Ca=L6n2ZfE2g@NN*3 zz&bKAA~gvIMHfI*Q0vTe|8cmWtr z;V!v%?_S<-^UG%_I+8dXUPPx#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&2c}6xK~#8N?VY)* z6ipb0`}|kn5(*+}pdbit7>J;OiWr!Pnh6G?cc5Y>qF#VYAegCOAcCR>1}fqfCOJ#KSvAu=E;D0)4-{3Ws;jz|x4v3>;LQA}sT}7Y=fCJX&OeO{-RT4_ zbf*)z(49`;LU%fW3*G4iE_A08xX_*7!mC%Ws+pOYKKJRqB?u_Y_(&@ zjy_?nU%x)YHxbyQM~|v~`}S1}7Ay#P@sAuiQoVowK0eWo)vH%mA3uJq)~#C?{$93h zS+#KC!VsPa_%iBD54Di^k{#T!W5<3xeE2Z9!-o&g#q-P{u3Whio~y+e!sOq(cW;QB zKY#v@moHz&C)=}q`}R-{`zO3bVPDVhYh+(a6NeLt(jB;kAXDWe{<>du`z z@vnaDp7_g`FEP}Ez5BIm*Ft#Lu3f>mu+Oe7eF)#UaU=L`c=P5>3{};pO`Bq9GH{{) zqs*H(FNS(Nefl(ps%p`qMKRRRh7B8nfA8MC;J4xNjvQX@#8V24Ef2UlRu7|0N#U-D{=AS#h-2+D2KSKSFgsW`cb*| zeK_(osqdu2O^VpPdv^@=c>Vfy49!~a99y?;4gTlPpM&3q`}gk$AB|Y7E^ujj4vm%a zpf}1Po-pIzirF2^EbPlTOt9DDL{GBzdivWs9a`Aiakxp-2krAXtndu)(|(TkY7dFy zojG)}=kP@y;9#ZrTs|GtC|`##+s#tI---IJ)E3*fC2YIe?z5$V+(A@j z4!hN1Omu@}#|qzStZm);T8vO695omrAXr4L!qd*60>qKmR;V*;`rGm+g|2bs9YP`}t%*?@q#IEE+pfNlZ84QnV{?L( z7->Y>0Gl@zp-szeFF;FIZUPBwJ*Y#IEr7LpxTc*y$x#2MB8Rp@PYv84R1ZW*y;M%g zprvT*g)5=-CT&g0mTF&`YpleWYlK9Yv&h35LkCHW!@jIhFFSB_^f2L)PMwv9ceNSJ zNkeUEGSR_`xI~j@Qs`IZNnOdHrD$7XR|JdIPSaJ~l5LF|TiQNIjJZar^K+9x<&r;# z?c}Bc)ap`tXAYKRwV~9;Vc5Ek>L_DWB#fqQ2HRJqZHdMY!_gGGmDRY(2sN$Wu;-Ot z(#|llAB=P#S~oWM7Vf@v$GT$0ir`!Hp<(mp&B4#1j}jK{;ZL7F9serd^QIg+bf~HY z6T;`upAY^p_-c3a=FJeUtwZ1a^EAL+@~Km&s(SFNbLY;**dBZV&9!Oc#*HylRUbZl zh@pO-KYt$lZQHg5zX|$KREuzK+zuQ#5d5|uo|Y_G5<@-sE^_zo-4M=crx8)`eGrYy zZ65}0O_5e_6}Fts%eaJ=)jjd z1KERqn=PHJtu51TXPT6iD+9<&oplBnbrsBh85Pz7hzAcI1V3l(zkmN8Lp_Vk@1wCm zuz2y};Df$wVR`s6xo6Lw>g(69A#Uy3wZX?Sk%qOGg_8BKeEaq-__;b^3A934>~FSL zu3Q;Ilh270C&G$aFY)2GCG?ARSUy?Yq2$6QQ_IMXTe{y zW=-&c-`!|Do;-OH{6Xj^3#JXN~q(SG_+ady0#VEZ^-88v2F{dpJRT=`Zz){%$j^>>@PS$-0_8l3AW z+tF#Gg!0p%+%iMQ(3yJ1P8iD9MB*9y4$>%(dfCas^SqPv6gq|S5w*(2k)OCy8zvPQ zf+lW|&_PB>&uhHe3W;)5MhazVOG2MBPN^}nP?pBlj=yePsN<;QH*${imq6T1hMb`i zGM@OO;y=@M#s+)w{rmS+KOc literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/MassMatrix.png b/trick_sims/SIM_singlerigidbody/Images/MassMatrix.png new file mode 100644 index 0000000000000000000000000000000000000000..884bdc4e97bf87cc568326bc79f63f9640864cb8 GIT binary patch literal 2953 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/Position.png b/trick_sims/SIM_singlerigidbody/Images/Position.png new file mode 100644 index 0000000000000000000000000000000000000000..aec80ccdf63beda13477e080297d23433fd9dbd5 GIT binary patch literal 3476 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 P00000NkvXXu0mjf++DUM literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/Vectora.png b/trick_sims/SIM_singlerigidbody/Images/Vectora.png new file mode 100644 index 0000000000000000000000000000000000000000..e301c7c92bf1257ec1a0788aeafe8619958b2e33 GIT binary patch literal 1493 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 N002ovPDHLkV1gu+D^dUe literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/koviz.png b/trick_sims/SIM_singlerigidbody/Images/koviz.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7605f7c0ec1f3669b09779a2777c50b9b00893 GIT binary patch literal 160434 zcma&O2Q<}x{6AjV*(Cc4Wh5&kS)ot}$=+mT+>mk2tZY)Ykcebu&+BH_y|~#~_ZnR? zFW0!X|NFK+-|z4I|Nrwlr-l2z_x*m2=ku{%Me96Jqdw1e{>+&()c4fyJUnxTSntf4 zbFJj0z<1n4bn(DnXFVUPDW56t=U4*1Aa+pFQaW>{GLiDgngsZo;;Fi^=b1AM&j`QI zqU^bR&zw1ZfA5acBVUWvX^Ix_k?%d5DUy!KFJtZ`3s8r@d-v+R({)LW3$Gq8E2&>r zcDydBo+%ksAjx=F6!(NDg6G2ECF)EI^oTLEx%p5N>DdqIhvb}Mx5jfl*AG$tYf@{_ zu^seS(!XgRufT27 zptYq6r)mh##X#rdRz#mP`Uq`np_6K~IFEV3?`8>->fyk+Zz<|1?7{sJh%^}3s^Z@x zh8H7w<@8ehmh}+KG;$w$j$DdXAktw9$vT{+6 z%8z$FFy)6}!6HB+b+<`7Pq>m7W| z@!vp{h&i5_pk3cjs``A6k|y9PW-rk~?_|G(fB3uLssG~Hoo1nmhL(VRL}YSN>w2DTxiie=}q~YON!VDb^4*Z#^36fXi+5>M5eV#-=e-NO_%g7&rl^ z=o8R%gsb3BDMM{ET|Ye!7O5BhWHL>*CD)WZJ=$E~dyIyuRPOV!r-=pyorY-JBK%Rc zrqpj`p*8c93!W;i&9GW@@WJa?&}N`dmgbv)!Dzb_rd+*KtYHqydovriGpI$DP+fub zciNF);~3I{aY0?}R_ewcE6E&;AbbZW<|h=7tY@;?SdlB@zi(WulEeF_A^bH6_J!Bw zJ*rP(HybYJKkktH`T+-OvSleU*+$Cl`pBZLzlkXKe&dnasQ~N*9)k(- zupIY+(Wa`&`?Y#t&-+sy9n5U!(7O3*8}EOW@bN<~wr+HJAl7_n0@yg??%!;6g$At7 zAIh!zEcy>DJIihFA3Efk;#bxsIBcDI?-!-ybM=6Z0u_Lig5Lkm&jbBAwDkvH6fk4Cl6WHPZ7i`7o9W6O6cw}*0WY-s)7 zSJvKENLo!HtRLPV;pFf}=7&Ak;RCx}lmi;qZ|=kTP-inMP@xIWPuiN{{^Eij==i5v z+Oa}&uyH{2m1PHwOTmY45eRL3@WcJ3dXRu8crV)n&2b7IhCW^LM+oKmgPHUTd8oEM zkuuGzO_R-}tq?k!ucgXD^9!ae-ZNQ|9UG|4KG~GmpriQ^uxd}!3be&dVve&tHte(K zUXmJhz?Qm!#pbwv&GOidJH#;RE8TyVRC_7h+-F+fqG}=Ybb6G{-n4pMHf4OSwnCVU z!*}Ct=zYeAtG4J$8+CCK6fXEcB3H<>U&i4$V2l%=Iz-!$C+A<5jhOZnHHUQsc&1g2 zb>mYY3z-U6BF?V4`up4uMNXHsZM{Qp(;oUdqqBnsQFC~=__Zwd(OwQ^pdoc z=g1Q2PJN)tO^|gafhN6YCXnNlgzW>)t!!}a!>(7e-`0l^iwdV*9(&f7*>1>}mKNT3 zneLFPWJC$KgnTO_JC&_KCs$AQLj&_nk!73{qdTih^5wZ>iCfR`OJlHaea_BV-s`9X zoIkcPVC)W0PmQ;a!r=il8-{6)y?$8k8ivtp3c^|>n)?lX3a*gW^Wieh$K<62IsF}^ zr&N3&;?iD*T6bM2g`Eh&C2}@38QF<26UKw6NgxydHA@iJ_d6mm$+XAHbZJzJtYVr?GJ( zZE?Most`=9bfo7Y3=+RR+6Gz7+0tnp9v{?D^etVB2TxQ6X-B~LCemVwTL7Q)W zIUQu_wY~ah6kohE)M3@;CgEk!3-Vg3fODO0_u$g^K~$=-66L4nkYPm;5m_#1;Qo?y zstCKnLOl^Ij;8x^ex>sT&|a75Bik}(BXOGOOH}Rl0k|s1D562)h&HPq;vU*EJ2fF- zQ1n(!19u!O2n?SDyROtD%BM_0vkhmkDOMj(mq7(Un>3|pzxSXr6A zg=JcO(Hu03FZcZsjE?x##l&)+tu-XMSU(wHdep6_-uB4`4m2@6?@7!WrZUm=lgm-@ zDf&2}dHrfd^Lzph8Nn>#d4f5(KE|)8uz~nut$zInE7qKxq~*MyvBUHZd?)xo?>KjJ z|K%q!t4FkpT9r%P6(31m$I@3L(U@qm=hFLYT7mhHmo;V1k_k+xU5O{n%pTI8gc2k8 zLgOwd-;>^O$xl&(jM$FZTB%w!AZ!_Lce9~3Y4FUC*Y{<1(+^G^GeGlD z*4(&G%cHr)5gpL|%TA=*>T);PsGeF}rGjoU5CcoGrcx^LEM#k3fjAWPoee74<|JTi zk~zrUxBVuM%6D;4M2@NZyz3M(`Mzu5nX>pvhxXgj=^J0s3bmugjCtMnB{S)pc!-fy z=jgT@Su>tU@oL_II?CGlh-94xGXLrPLmEC$w0+=6U$KI8<${|h4Ymj&bghx`#!`K< z%tu_}Jj} ztkSo@X5^maNY4eXoU37N4feNbrJxRCFBlxV8TEWkS`zav(a;CH*b-oMnlWCY2a0JL zIZxjg?7Mgqm!vkwHpfFwMd%l8MD7VM>fY8jZqiz$oa;d?m(pGHjp4IOj-QUiapq*^ z+x%XSZzYup{gmVwV!HpWb*kGNQWP2tJ|HRY1TZuJVw z#rY5kd5fEWaMZW=(yI5tR4JAA0A5)x2{x?@I(9~wOp2PN`gd@VwF=wKl3WzdJ=s2s z(M|N*_;$G7T(SBTA&dc2iaY}CO-oIkUB>f9;Lj1IpBiNA%)0IQLJ5Mw`oI_ecj9Gqg&w8fr)>0q8Nhuxa3N{$ud=MO#q%i1o zVfmx%`zW2eam#GqapDYEiXA@ro-zlJ9ckbj8-3V@UQrT*lF=+NZoPF zIL+-;8MdNp>0Cm(pZ#=D{z2d~)}@`pc4p{@^VjM!FcFNuS4a8*)kPO?Ig*rC8~8CE zZ5gI7((s)KLjpcF6!e_3gavPNY^70OJo1C|A$$bD!9C@62{NEJ*sY#PHz7-try;n{ zM6}5s-}6$LiqVM|NX5dE)y@*dg}^66mEch|^hADPHrIQ}X;dI)Vsk9PRAZ^BWw|V~ zEpeaMgO2+rvkW989l|fFDEm#{`k50OG8w1qE;xZ-E?bEhpt67oI!Lsu-HKQCr+Yau z%)KO)7~%cERppc8B1cRr$|#SckN3SH)n_ZcoTlS@$F-k}2laxdaZ)DZ*(JxS;Y-w? zuY%MMrx(&k4dUGhLp8}KC;5VrY(xgh)j?cnYi4lm(doU-0e$o)$?fVQc$N~H(9{! z7UnsTf+@;xVcKr}?uq<{t6)iAy_#`gD;c^D{cK3fZfC?mIQVc9y}YP~lyQ)8&u~ai zJKp{H&|8s0@~ef^;;$T}q9~>X`7W_&j#S-9s_=<;^OdG8{5gZ}<=&voYq53*H1kJmS~CtQpyMNRaA5z+nOkn zcxz?#p@EUR6_T#qYGd^_Y)R>LeCk;Dsz~VX{zhl72z-{@#^+-UxZc84r1_-Rqm2uu zlj^&EjKOFhX+jRBDg-@iq>}s_R&r0T1s@NPU}8jri>D4I0Zz5mXPC3`K?Z@V2=amq z@+-)EGW?Ii4i|xYlmFv_-*T1GRR1wJW%9(!|JQssO7Ji7Qzp;lObLLD!x7 z@8@FooNUy6D7kwB{t@Q(%LTblai2eHe}I%tQe|p0ojaaKWNC4_k35 z70FyD8<9ll-b{f*x8^ki#33Gb8aOlgZ%liasTwnp;GnH6kGgLOR_CUi9xW>B--Psg z=IGU9QccUxU%eBpZ(#hs6uLV>q}FRj&XH#BZM;7*)@l%hZ$_s?Tr~Lrz}G>$*$C$H zT*5<+p(#XoyOQ4{L}4u;(c|tZPo(*%W$>{HGcbkd&-MQ%Eqx@zbE3w{pZe&O{A9aG zF@qIB$c*QaeeR_i5Ne9Z^fL#t`L6AVUrX8-m+#PqwHLs_Zp8Dj{ve|8y z?KLWh5NUR41llIT2X;7p^~_gxZHE1$ePpnO8+2zBR}VWb0|g)NjHUSlWn-aFyv0+~ zxCy{g&K6yvn~LH~6V4UFTm7D39=gM^C|;({w)<}pxA)o_iATJ&VxzQvoOJhMF)1|u zrE>Vq)lVI8d@CMWHEy3ZV%ubMzJmH)n|2WHwa4H+{*?Iy+46wXL$qj`g`X1>Z_Y+I z|D!zX(wnD8TL_@;8yc86y~m~2x4ggB_~Vtnobj`PyDO4hp$Wx`a{4*Ipr@fvcI)kc zDJ^a%Nn{#=1a0SYjXZDCxK??GNi1k1j4OHQfo$1mL?B1SQ6VLCD;s;wvrozpf_t57 z*2TQE5hJtN$%t4g%C%StefeXGn3?Bm<6@2}fNJrN20Bl7d4F#B>GpJHlvK1f1uV*< z1tURzj(xAM)7uZj0{&Zp3*zM(yjwGuZqw;%#*Tww$MDJ?kZDm*l#}vhKqymEsf#gm1mH*5!1}JoBnZmN}j>CnQDl~#z`(M=H5zH1w((T<%E9It8Q;XAs zu{31x$(Gk-z*gVNrg@Zb_=Oxk*|i!yri?mZJeS9}*1*Bd=Y^k&EdGeb)zw4G0+uu^ zKUUfe(^p0=Qf@|n=J|yE%AaeNpm?%}+pUK|<<^|EOa8K2Wpe8U@zQjj)-M$NZ*+FQ z+a_LRSOq>CBayqWxii5+GxV68FVTN$9!_bo5sF)NP;9Ywn$@I+Ym~9UXU#54zOFy`s--Ri!~o zL9pKIh+)YwGtWMp;^~&67n^R_CtH|0df8HV&-Gv7 zw+D5^2;Lzd(#RYD-`7yAe8&||xv3IGEGO*yo&)kDX+$W(hg|7J(HEmjxi{vbwr*4w z#A2gw?uMPFsAP0L-;|&2e8dK6UMkF54(ez_gm2_&67#;JY`c?rZkNICh-UH9OY%64 zx9&l6am8xOp)YNkke<1RQ%w(F*%iVz%pWq$}QVF0g}rVkeOxHPZTd3~h7 zCTmGg*PK7sq4ez%4IKrsDHJGLToX|gEz-pAI4KKwX=0Dgf4_fo$;L0aOX)d8=l@~TGx96hhwBZ852w57h7@e7*6lr*S zUWYj4Z~f!$HG9FN$8sdc?^~2UHzz9o&M^EZSp}t@o`GfH&eisGP|fMdVHz@U-BW6p zJmiJp7b9+AC0DI_dfBdFuDNiSf+eu6YN^)V5Yxbp=ebTlJ#TJc)U-TF_^l zB@SV78T}|@&?P<{@#PW?q9SOgWLfZf`fYLfs6d_@l-e|Uw&e|TF}L)4EQex=y#r6S zaxD$ay+)c8^TGul>vOtmX?9h<>X%u3qgQl2W4$9bT%BhjI)Ik6?Q!jhK?y=MYvS_7 zIJ=ZG_0Q zWTB51s(=zY_WqUDF{_5}d-7E{@#`@I*8v@O!ehQd+f zB3Hmhn-tQyv{Ka^l%bA$2OxXD7e?_>_2g{@%qS59Ed62l(=DLtRRnBhp-T}eux0%U zHunvqIfl)z@Y@E5<3Mq9E@j=PYmol8lqAw*inOxo#y+10iev7GJ+irt_2`(9;Xe6_ zLx?JFXcZqGBsjL^w+~+mjVKm5!8fP4q?&t=vlV!iI=btTvlmVi8e^bi1n3+EcNZAm zMif2t&fw)HJ?fnGa$O#DjU+lfJ)!#3t+%cR<^AZM@n7UD#bi$-tVPJ+87 za&+hWN`WbnQk1ji;MJCU+_baAvKT<G1j|C^`E#x9jzfNZ+oGS7(>SOh@D=b}9N*vCDbK5-8Jxf-f{ zZ*AaGV`h4WbxV;(T<2;M>>JUW3$HXp1f@~F^Mq>&@8Kd(4+*f6tuQidc{0$z~z}`5DKolsA_j z0ceb4@4}zqvDL64TqW}hZm7vG>)HXb62~6jpLy?2_;n$T4g3huFmiTE9jF8T@I!Lj zo_x}iKj@wCZuE5G|9L#t7w-JuBFO*i%i1^qEV4yJbgCFP35G$Z{8q{cBZ9#hVg!OW*>I)AM`UPF#RRDir|KILk%@RNa9+R&1DgIb!{dp?l6f)4y zlEz+!UJ0Ze2EdEj!dPWW;Yamq@>d_oa%<`rs%g3>9xf`L8n3r(^?Tr_ea8Hi)2AA= zk+RqpFH_&yh!ynjdE*NOSo6-9rKP+s0W~CdFJ5iIxO!Q}#w@#;sECsJPj5yfkE{H--ja{r@w zE=v%;q35p7Z+ye33_J<9O%q}W5G+E#_OxzIONAaw@6$%B7!RMZ;}mP<UtK|#C@XK90t6fNDmm@wGj)58vftcJC^$z{ANdJCxtGXpv$ zMjEh38}}Eo$aeo|6o94r*rwlUsBlec<5Y!EJARQIZQpiA(pFZPI~1XCVA&K^4XCoG z0IjT=^v;evIC(x%u~lwS1}O-DOFv_)5E3|nek@no2wEyf2Xfk;0%fLo%Dsnkr+!ya zyj?+|-Zl`t!-h7!=N?5j4oeUboa&f7^-l*pA8rH?U4Ws#pxy+FbAbv~{px5pn zV}mX65W;Fk2v>wBtI*2VtOCtXUsGnKw3>i6_jHa$0s7+w8?ZVh@C3q^uRSg-;^5Zw zib?`Dg%1>^8tP9Tf_KvPH_33wfdI>jH{#_gXlfk~-J1@ak{`sT=5Vb+U2mS?(qO~S zfPJ_b0{&h6SQNVhGHLT30~PNYL41J&P~Cvqf6w{TA;R*cs0Lj-}7U5freqmWD<45HRd&T%oGgu zI9Mt&Oax&rg>!iJiq|HvaC3)?8M}i|S1eCWihOW&D`a`g079?_s8`@ee73*U?+u}s zA?C#tJTPI6t|pSi!fj7-XSn#EiHH`wyd2Q36~-04wu{ zUwKBn^kl3^lOtqVFV`ezztjCh^RObq)_oZ60A&F_bwc4?A&@}=}Wny#D4wz#^m^hc|5BUNV#boHsHAzEnJ!;V5 z_Z|c8E>*{UV9s}6rVoA!&O!~(wWn7}j+Sq5hgU}agb;`#ppU}*ECYb2ziPSH&I~6I z7LwtGJZa;n!Q9WXUhDyMs?m=kXwBJDD9y~{UUrNG+f@EVv!`uUQyz#B!T7;FpiAo_ z^QMSXf!{M!tIfvFgS zb&?T5hCUl;9qDC`SP6rZ$YPwY_qgj=oi~n?^)6(Qz zt^zFg;WKr2q5+Adr2CN!?hEeAImptrE=5A1_rteyI7% zm-T4#3LvrRk>U9)K*Zt5fCY&i)Ro=WOi*$Wn;1IQQkMnM%{+GIuYqlWxKvZO;zPP< zPFt8;>6Ks#kSi?JfYB*3?9*{dMZo*>^OsHnf)KHo%bOe2LSYowb*{gCiKTpEbe`41E9z_7lT)jUt)_$OR>~9<~O_UiT-9x zlr3#n-mKOPJTmiMRr4j+((*mR&;b3Ff@ z3#O)hWO2gXB!>QNPqZlazV|2?j2hX-ANZ47FV8f22YZ^whCTLshipOm4${XHpyhHN zzG)0vUjF0mcgLaUQ!vd$g3g5iHlJnPq+2r})&{%{I2g(mA>#^o%Jks&WAVF-ec&KZ zrl(OAyNv)rT*0c$D)4jm$a-T^49ihLHnLxtMPDs#7U({xEF(Zdee0~-DnIzPjkwpS z!M-ZLI2Uw%F5`EKr|{PNTt?_cWaryVb{X3?D=5UocS|rQYVT@c^~QIxD__`qXT|Kk zu=?dWw|j z>w-q}lOiR@_GM9<3Cl_N7{iu#51ft&dSVxS&k^$UNSo;qWEYAJ#0pgeAFnuP7M|Z! zcEZaHd1wmFQP|Xqp{}${5!AcPQJs?KGN|LRpuVt|4$LUDmC7%?F#+t9Si3K477k=PQhgo}+#bL$w^NP&;B7FNI44qA_g)iEwoB!R$4x~ez(6ZU&lg~UE;mc?dw{42ZNU` zHsdwM8mAWj6dEQLX+*Z8)frci!kD{-;Pi-h!zYRBnbx0eZ2{f1OoK?2AagyMskC{b zBfWRcw}#F_1nAC9*Apa57gP$;slvR#0j&BcKF{~{Q`Icz;x2$+Mc;?hDW}(7dSlXL z-a=RTlANQkmCi4ksqoZD*@%iMhy9KrN+_IOXnKQ1ocbHI*AlOTx+Zsvtx&DW@;)-~ zrMgB9_f!-1MxLG6o9ZqLZf{9Z`ryFbtU%SU<1RmUwB8N7S2>3qx?K!-o67X%A6t$? zw7;=jm3U7u^{HCi6IP`{SVu;CHI}u)Q92j3bMz_!{6d2p1uVjy zv1RqBrtW+6$R!d{UnOXNG<*3y5PPT_SJ2+9*L!vza-jBI1v4yq!zx><{3FvJ#uL!o z$YBCqHL&wW^kE4K2S5Ez>0%4GwN`Oa=t_-cV3Pt+XQIwYG|_8!QPPtYcSYjlwW;yM zAU2ykqpzAS7w{2vw3`tPw;jbvir(LIVd|`1<9E%udWUgNZL)Qz46HAn_JNmnZ4cEK z7}FCA3uiAO+0SvHq=$oXgZ@)i?6Y?`gp_0Uj1;z1rvR>l07|W~ZIu9X1t&sOs2cNn z64LYJ5A^1VPQU)bm#FVsWkIEM#SL&m;BIRA=3pS>N?F<4L=;~nU7^DI*>d-+Q}*!l zb7#f%ZyV@=Ak{~JY{>b2zU}RFp(M_r@_q)()lh@2+v4#>m8(?;c3Gx62 zP%F!Z!hAC&wV6W^fL`0e)-oCt$>E_+-PuQ!z|#KO?xr^NIjn)Ht9}G?TT3=#n9IrJ z<21IT&A(9io~Qy9cZP2j%5P<)is7{;CMl=*j_}2c)?br(-u=Ccl)rimZ5!w0XN%Ir zaf-7xeTR!$gH&n7say;=_LUh>e}TSsh5@^NRl`{^o@mMCoc7{iOA=1JnD zYTw5m3L+)lGo~!HCh4>8n$f=_2GfL6ic0n1jAp&&r1xh7+nd9_DI4jEWF1EdyRzE! zoc9*8&>W*IXXc4)!98wVZ(8}qbh};x21E<#SCEJsRb^q>L;IM-7CNoctB=pWYLcE- z<6z!j2q`+!vf`c~7g?{b485J-%e(XO564txxqfC%Jxsd)s@Ss@r=8I>aWSUFSqTG% z=Qn!SHMP%7Z~=+5AN z?Z?FUm(JA{*XbL`AEXBF25?ht8n6oa_FO*mTdGYLxZYPpOL`KQUfdvV=E5CbOs16lyx>TkAs_OOa<^#|_GXr)1{0ZEHzK^Qy!|>edp)&N;J5Ji_)dM&!{M423+M=iFm`r8PzM^fkGkn+5G-ydpSq1m|MO7p{t} z4QhzWe;S*)*M0ZV&~OL&E}iesu}(WNbPq94K*t-@Qd3uVp7@n?00XUF==CA zennI9-$e|7)+6S0>50*GU;Ai50^j8=)YOdsTZJJHm(p%`i3Sx4CM4?UPA?xV<9b7Wk+o^fVhc+9?UJo=My; z1~-X5sUsLr

~4L1=km7v;7xkfo-7UvH{8n?VS`QU$OVGW>$HfB^)D;!(1HW0XUQ zX`Uen3@!`++)6^uU;z;- z1gt_{O+;YA**Uf`eKxVe25AiJ)ENtZQyk-Qk28_!(Sqk{j-<;xhP0$d7$sDJJzE}P z`RhtRj$zUvXogik-^Hfhy=YuOP``*^G}?b}ti9J>xht7KzePBI^hw%YM#R1l^Cu`% zMKK=%I}rAZ1YZ3RmrQuVUpJr87ak)>^}!P0+=OLS(({7O-qN@52=HixG=ys(LFO29 zZ*Ht@{L=_~UHG0!<&pvEqVD^%dBC7T-4*x7U?(YuN`D43^|5Bx1#tc`H8-()vWMdD z?{fFXJa+o=|2ba&-X6Fsmj6E!`+pDf|NCVuR{#S!7%mKi4FKW2&I28Yrw(8TJQi>6 zzixj1k3;ln5M&==X@S}rxwt4*G-F2!{hSxrPU?S9Z=g2LLLP2(Xv@_ve^lMis@yG?lZiV1HAY zndd|wZ;R=>i_T}@354s7*QoJMGeJT-F9`P;)>Ru3d_5HAzhVeG7{L*o85h7n`sLOW zoSu@~j0cQ=>Za!XC@xed2(WlCpE_ttNC%uPwlZ-U$bdpZF}s!s6c@7HfR}`{gH#Uu zmxI)QYbBW(`tvRZ;InoaH(X7mO z&Awn?#vh;ib^<)yhr^p#z%)2gsyBo#>tg`N(M;HsoLiF=NME3n0Rf0#|AK|rh`vOi zJMq6oLj$@*Ow<0ApoEa^v4dOO#{qQ>u9t&Lj?`M4^};oykIP%{9>Wb=AI6{40~2K8 zt6!cP<5e>S=7pQFgj|B5ZOBa=K;9~*0EIMgdLG({AH@SP1~p@##~}dI*${?he(wD@ zvGMV??SU?~Zup_b$UKLHMCif`F{Y=SO(@sn@~>hFE!*!!g$XY9$FadtQ?U6(f)Hrg zZq+N}I#B~9JqaeKWuiS#n~~I>{S(L@l%=!+qBRY$!P7a#&+K~l%RkPGxX8BW?b{$n zDYEy2Uvb~sZ8ARsu?y@s`8ogeEjBtzzMDWvP6c#z+nF?=C^3?BL{lCDdTgJc<&7Lk zK1|(uYYRcncwT`7qNyPIr>S%}AT|Sy5uv>H>9#QthbY1K0J5=#yitLgmAC=mpV_Sp zb1Y?f*uukDt`*VCqha4tE%`87Dxk?*m1IMY!>}?l>OJR_5M;tBcAVPvJve<(#>lL63i^xKw-AAMdA3{f&00OWl?`-GI_KHoJ^g^Q9WgV? zF7z*7TaQHy%(K84@37oai9RNsrb=RNnIVy?s2edbExT4fHQ$*AdV(D0Rbzf=#P`p{5eMP>wL-2)gc7G#cH5j<6QAPdHzW~ILo8QXlIfD z7!T6YSZ3#dCQ%aFYqhC(r26Kv+y;)Vn2d5Zvf(N2EC1LUfsCMB`h_g1$K*r2Pml2x z?_$@0HecF9z$;$Cc)>-C(qi@XFKK>`crgpm;cB(E782k2@>hNZ3&oeu#rj{=)i8bl zq&u1}w|F*a7t^w18M{>svG(6=e%;jCS!-qaV&u%qM;yi1^(8 znde>0k1L`XBAa3Kom&{7H5oN-cC$P8rU6a3%I{manEq3(>u`wkM!>gRJg{k-GMOqr zk@(h$&vf0qb-X>aQp^9gc;-V(Jvlv<|2x(EGM#xp&+M!T{s#j?IlDEHa@YN4xwne7 z13$U|3cvnS3`U&6Y_Y}C*CgtF4bYiKTNoo+fmDv%Wpb%0!{o4Z|Ctc7(PQr5J7zsi ziQj*8s0w(LF~;~lZ%Cwn8i+-8%&W-@a=GiX5u4iapD}bOo)n17-z<7Y z%zgr(S&Jb|$UEU^Q{J-rZ@GUUll4REPhdDd-rH@LDjQY*A%0=A?dGfv8p&yTi%Ldh z#cT>HWiRRO$v=9ny7#*N#-%sU(BTp-tH`j3pM!;G;x0gNH!QC)LoUBdHxQR?>WwU> zo_*d!F&qB&_T@@fzzxIzbtZ79`#Q9%wri`yi)a-NI&fN4Nupd-(S!Y`OEk=^K)>Wi}J9oTAHp+Tnzy1mq@+jxOsFN8er7 zI%g*Ys{sP=%wxCof;$a2-*QOE(>0@jIMr~vR^iG<3@^{-u*9*t>|LFVpl(ggfh56I zsO|`WS@}uJB^dBP-nD&|k~b!AUijlF^e$$7J>Ek!POO_U>Pn6xl%*)f{nAWn{Y=Z< zD85!aX9d#>#;~p|M^*a#Z~K|*9hcb3C|mZ^j$PD!+3>YF z^zBR&gLCHv>9I((>#p5rM(OdWa@!o1P7+c%ZRRl%Gum>|_K0H&s#f;<0t7B#9>G@P zAY)%(VH?gicIoUL6vfBzhjYSU*0EqivrE2F{smOswYxqF7~Yl-L~WnCLg;0a1vF-^ z6sF_mjoL}HnJk2eFXCA%wT82BmnO@oH;coHs&=QZbXhlJ1RDCS{P`Utd<@4N0TK z2ek1(?eM9_Q%sAL*7k!`zGJ$0ljXry@YqEx1&EP2NuvK|K8ME_Zm*BA4LouUW)cbF zq>l?2X|{t8H+rimnw~6~+Ysfo4PT^F&ir}(Vcx(=i}j5O$NZ}<&nlMko(eOlHytv1 zMBOdyq*H3bM_&x6841J2fk{5vZ#6CM^=*dMHw6nQ=0z}{7r*<`XlG9L9eGUMzai~62KA3pDkl4EnPOm4-1N=I`b|{jrJwIkDI|B@VGdt59qG*m zO-)qu>rrw58a10|b%6r@hA^~b|80C^SHz5N{;-0<>J?U5Hmt>$>otGF$swc}g@4bLxE+@)8276{Ru$gJJv}wk>m$rQ3 zf`I8|yNTYN#opMj8BFz8XD*pee=y&w@>54aXqiPjW_5pdY85-@Fk5L-8Z7&XN%hr!TRV-@Jf4!gF~*cX%>q9! zWy6v2aV~SKab;v6V#B7C@8>ErY_H3&Y!v|VUToidFFh9$Z`*rBMX&7IA^(GyYhRs7 zPT^o6(V(qOzUu;y==ilpR2N)2m_dHZ&ix`1OnXmN8YrkOC}caWo+Dp!Gny%$wrJ367@zwFv;6I?FU^v^O&|hIPIYzj7bqhfS*{3KtCwHBz<0 z_N2!OK3G2YENNVsyqXr2>YD#F(IENP0qkl~m1x24w3de~L2Fte z`-Pg0<;^qASc|GTP_i&CYZuka7Pqk+ugOM-Oz9<8(VpQo;QAszSId&c? z4C13wFKP1~_%Sh4HtTOowa7aJ>brf9j`NxPZ7&AMgq3&qaWTaQe{V-Z_H8hgbRRzh zM|oMG^O~yRb!k!q+sDbe7uPNA}=neu>hZ+vly{ar;J5@_5r}M~`Ylz)M+F zPU5$GJ?Ny#NvHxt3vRNN3xRABxL>Lx9=1|}vx+^0#Y&4scfn3u$yRR}B<+dC<;m$n zr!Sho=)zO`n_m$ux!8s1|b>^+q@zbT1v!BW**T<;@a4$P5 zDtSz6beu{oty+kK;)#{;@UCFSK_Ls*3$=IAI|wTe|ELQ z)te$)&@2ZI-jU=NK~9lkIX~ySW&1qu=Sq5eXf-PMIvU-Jb-0`LZr+5)crJ1|h9WGsQ}8w$ncUG?`^R2Qo|L@eY)c29ts4%bj^N6?tJ?Eh1)MTn{4brTB1d zLEIf4{5cRO0K3T6xrxav9Q)BW!uKW@Zt2&FwDRkGP{e?3$mqM|?fg1UN z39Uis6=Z9mrX30pLJ1DB{^0@ikSMVeT&cuP=QDMT0nIrv+VeYkInh>i-WAExUaPHF zU6($J=3ML-YABWaN(tsru7Sbl6jl`$f_E;EU7$ ztoM48)o1?*l>kfsAE#=7<}bif?WC~qFaw4GlXHI#?0lA$^vX%$pRB1~xF461&hsG= zlTRG@#ynNyytTod=YnHfR!JTH`S0;TFR;YojML^DACm|Q`7dQstU5!`CWg^C_Exx< zROQEbfwhv-s{2fLn{4hKP93-6C8h#^h=t|I2-6?wT$3hlU;=)fdLERe?^wD#*VS<9 z@L29~U8twAzP;)Y8)a#)4a8wyUud@X%f}?f_@-ftWj&c>rNFCUWo7S%KjrF2tWL(x z$0hkEvQiI%O|w$o#lJ7c*67DHeUX6PmYERW9lN-T-AyzwFck{hPO07L%Xt4}&kG8zFapM>*5YSg;&G*b-A(-4C2BdlWXhw+KK|4`Vx|t2YayTg0ZPFya@s5oAbCl+Q1JlW`3T(s--ToHxq`41!zJDSWS(6J{O35jO^A= zT_0#0Y)ef=0dn^;L%(_D3)f4?gK0p7H11gA;$bqQJM))&dIIeDSmZUVs##B3y&MOtw%K(|dMO}IFO>GfW;J$pgO)_JYDu7o#3 z;`jkg6A33M6=O_eA*MyFLQ@=GKY>7JODP~#5TO$|r1kd!kF{@kV&fKsh5bXm$P;Pi zmCj}hK*z(5)NW56tiO(k5+rb9J!WL8B5=~lOVhS=Hpu?A;JifsK4WMZ$7ai*!2!Y&kgB|I{OetGjTVP|4y+AGjjXc;F6N%Ys0`< zGQ~Y5Xrn+q3nw5tepX>FKQ0FZvjf=(y<;?><&QLQJrKa@a9>roJRM%75;4;xWm?_? z)L)0Pt->4z#tI-6IpMH2cELC>`^yeNy(An^^SZPo3mGMwqEbD0F3yt5yyzXa`mxnE z;+DtO63vNfY^$}^M=qz=NpmgBUmL*8L^WT5Xt;Eubco{0eApzH*Ss z%c1`fw6O0390nXdTc=d!@Ft}6P@bqml|x+B^K^T6Xl6RFVLDb`Z*n06W4s)+l<}i+ z(cg(Z7s40Qj4@iQvIfqd6(h@M#T-uvagJPG;4DOU1NwD5Sq0%Z$DRRM_+HSWi*gTv z517<<$LC;{;alG&rro=FySc&xy?#I@y1SPrAi$hf-7?skS_0fGlO7O(=3Xl`KhlpR zXpbuzx7X~an&x7J6rPnXrb_}@P^{no!_!%ZHTj2qTS7uc*I+O}ln|tw(WL?cl8UrQ zmkMl@N+Y8rl?LgS?j8sN(%mJaW2C@)@AtgV^AE@2Kgi(T?)!UPpY!}6D^O2*=w^n5 zqbaiYoJ>RiYGLDJ&_{;!tLfM!%J>xPCDIcTRH4+`wDwgUUHyFNO$u5aX=e4p*I<@0 zib0o}tkL(w1Mp^p_yL9agX2fw?Zn>fpn-S5K4Zc=Ubg79?p<7jH%=q=!R%jU%qL^0&puq(*`alJ?%yYB?~>{D zjrFZs^t&1#f;g5dOxtEhpnVe_5BYsf7;+@oYGm0GHht&CEq@@Mn@CpCB@+)GbKsFk zFxrKp=nmf*-Bh`cvZ@ALm2S%~=D3|$DR#wSH!{_kv~$V!S6=7Zstkq7G~{Na{G{Y? za&Fpf%aaKuM$i*HeC97gL!W9{I^88YTUiFPaopuE7+nNa(&BXp-;Xjn2&$x_=lE*2 zD0N@!p)2PPg1rUMKW5sDNyNG6$CNYXK^&k77zpI}`Zd}heVlN-r2Vt+>#<8l>*2ct zcS~xcJlvMSM2I^QgOW2#9ZTAmd>-zaPlW!85RHalw0w=senz#^jvL9&f$O9i&M}7K zG~yizi!m7>D893-GideDobj2)@P>2TjIj)<2YV#eLq#36$-FPS5V_EWAVBQ-u0j^M zu%oPP-^1!MUnh*IXs`2-_bO|^hXBnXxgqJHTBn-nT*sfkI4~D`)6-%-UI~&>t-Ib< z+(WjjF`fV^=^3kdrU8T zRPid`5Z6!%X2Q5^B5$?2l3sj)?rOn!EanS0YW-+^JyuMFPw*xov9@XbF@~vmNM-1m zm92kxjc93K<$HVcCJo-<4eULz=u?N-VWPtJr5N36X6{g9@O043WYUC@AtP#GKw435 zlJG?3wh{q89x>P3PDk~i$}SVDkn9*6{(JN9|5*p1J@@njA_Vgi{Vcz{uVB}}`FeJ$ zNViAQ$F*4c@Jx5IdVlP*P~FBH-amcvzBhBT&2&CCjwL=O-i9W1k#X4QL-j2IZ*xTzx z6CeQtZY>UVbsrozcm4KpCR!%7`CvU)JKpPVpS=#IJh}eyIrTj4tT-BzNx#im7pG5e zZAPHydoE0tNH=v_5;pk;ZMLrgXAe)1c?P?>8Kc;ibYe+-WvY@?i^KZivxIA#r#I&2sXPe10eDFD513~AtRsH|faWexUB+SY@Hphkt z^)R~}NknU^U%bx0%v_AT+`seNMb`UjGa@4SQGQkzi+GCIdbf&Q`8vl6ic@A?pRjMD z%&fY_#sOpBIXYZN`Nv4crElP)%wR3{{EM95k&~I37E0N4{?uf(<=Sws{2!_z?5l`?T6u=FDfm z{%_g)OSA7zEOu9=Y^455Jl^yK*_%z5tn#~+L$dD3{(M1aFi#b=7A?P5Q-0h&gNm6& zzJNzl(-?oScYANIMUvpX2$BX2O)ej55c%AVAH0Or-JL~w-)x3GBEcCDiV!zyT1kBM}E3B=_%Ej%r3Bom1>B;dp_!-!M2(zI#;KcmZC1z31E^( zo3F01vHG%IKF}Eu9Itfm`*NGwc|*wLDvtnG#HKC4aCgEx@2c=$5us(Sw|XPt#deFr z+FLDvMgCXw{l}?=8u=?Zm3meiMxbI&x zJ*PTbQd~^sUQ_dOw46)CkJ&MeO*gzTg1#KBx&k+c>_K$wZZOBkCZU--J*?WPNg=x& zcwcIg&j6!0OjyOwzFz0-2Fr+;x~{=ylPOM0SJ zTJQWQGDysQG@)j(c~_Xz4ZDHcw8Myj`xKM~MTg9iYomY@=373LV44X*F~N7_d9Y24 zO`wgrH~U<-%~1dH0`fUNlEOtaLI-JwtcAaY>+XGf!s~wohkE;6q#0Q~`dq>2qO$DchAPR385!HpdN7O91bq>lQbU<(gA;d%`toGD;-Q1D@4?TMzVMHiA5 z)pFGH=YU`WZpHiOCVLAHwR&X9`{p%;p!GzDOkj)yXzQW1gW2S#iefi*ouK(OFW1Kv z^m8sJzAL!H*)Q4N!^(rb!UD{I_+mNOBLbl6d!K=qeqp4+}52P-cNHAzCsS<&gB z#}hkGM;~gI=-k3?Ls3={S3+0O%>82a9*MGweYQ7MxlVelaf=q0m!iwSEWJs!P_#}Ad4$J&);C@820 z%nGNV`bu;Mx}ay28W6JpdMi#7T&94_KBdCrBu>{6(F8HCi$VO|Zjz!JBlhGLZ`&wX zmU!=OqCB$fKHOa&KkFh@9nxA0Rp#=KQTS3LSiba3L&R0rm3rKc`zK5}lmNQd6bh0G z^;s3Ye(I8PiHDoFRd(6m*2{wA@Xv<*$&ko@mkXkqPGhxx z)*r7GTURu*=c{>gCTCF_KhJ=t=gLRdGs-MSVoz^9D#r{KC>U8^bgmoDzjry2%j^ya zpUtWn^9=SP+M=Hs!5chu{&Td3V}2m3mky+`1zNyGa8vJGk;$##g4R9E-Z8K%e8sE< zrbZBm69{L?q{FD^j~k64;YiW6TF{3f3DoCAhkdWf#zKk}#AbIejDb@i3(Vcu!!t%A zY08QeSmnKlH5@89y&vKUIt)6WZ#lq>3rJo$eE!m_>NNM z^9UTI4w4OZ&%Mj`_@~+hgM0JJuyTeE>M2UpbVl`zDQ*r z>q;D6nmPM9A@fQ$B|CF>Og!_K%+U3K2#b}UWhDJF+J$#GcO=9c-sowsB*wR_|M73m zv})&k&q?BGhy3OI(a%<5Ze=>$No~tBBjIJsXU7zWZATofXE=MA`M4qio#hO6e9v_Q zxIT)x@VrJgALm@Mkp>Wv{yx}zo6BBnWeiP8ZXbH`!2+EkRZF%ht{6VJ6}$o_s1*62 zO;GyJUZaOJIQi?~nnW6om^j4#G5dGQ#V&HF$kDTMS5xLtLuFw{h9kd9%Fx#jNK@n6 zvY_!H0+}swDhu&B?njy0as<{*s&gXqTveG(5+Nk|QUr3&`Fw9Lmgci~3Ea`IUdHM7 zBzoe>V%9k_p2xMzMxJrx)tZ5V#NOd?($qh7SY>Ee;s1DP+o-)BGqt&4=lbT;gzaJx zPcp13i5uOD2tJ?F*YUQ)ja5iZ{^_T}>u}wNs8WHL7xL_8x-c#wc$NsVTE?qobIU0C z!;CNEAvJy$EaZyU6S7LnMwVGMFM4)Aujg(y;nUd-A=_UABWc3C7OJPPB4i0HmJvlx zaD_5}Ns|G7pi7SU&HPP*NpyQ4B|k|Wy0*e_7WopEh+V+BBwk>?1#($@ z=s|$}C|*;qW!!;Jb-E1%FCfX1DbIAKvcIxAXT8iVB+<*%2mZ3-(=kk>^iUeFt1hqp zCnOs&@hh=mhxQ3F0$Dk89v@Ovk+tF{oasZ0x1=?vYCue z3@-gRnY9himtFUh=VfgZS+>b?O@GK+uO?YL1VY^Z+91FoX6nHLERf9HqI68}KTsHx z34N@ltwYb=ef`~N^=`oxvsU%3wf8GcX@`7W zpZ|~9Sdi>+S;TiIktEM#*^HDGzls8)UycVJOvw?^ozTM+ZI;V9Wx-|3FZcAhrL^Qa zfBNpPRGN9WZHw?3ke{A%%m>*)1`kflhkI|llDuq%9QA9$Ye=PhHrvsboaYpeVHDl1 z0u+aL#)(sg5GKleP;mlsD{|T^=^=ACSFL3C2&-am0NJjBa-eIh1#f?P)%ven^m9(9 zQH|F~J)P9iyTy)=IYOl3YJ3W${qM!d&rhp)p}i#Lra%T`VLzqw$R3p`wUhXNEpeWI zFeefQ<>R;zEI(|1S9h3?hw!k{JKbQEW{Nyh4a|EE`BeY;Hy58RW^}gJCy)76Yn+X^ z+Fs=A^SL@A?xS^!`>D>alrZ|O1;)M+^5YxOLK2Kj(v!{Cm$mK4kf@d)&ri&pb_sqw z_VMUsYZ4uT`YN+9-g8-=YYLTw;yR7;kGnS(@BpLez_6a<`Kh+bndaszpEF(y_%Rg* zW|3iJ5=lsy*=4Njk7%_)(sSa|n?}x;Y>!JPz{wa#!7PZDn$3&>c!$l9^r}L7^T6p! zJJ>&F>80abM-m$q;)c;1UgK5Dn1|qFw1LwxiX)sE9SWo|8!tB*rU$3dBj=GxD-S~! zy(4f}#V=l%5nQ7U5J*~0VyODsK;$dn_0Q%_y26!*3&p4Zi zozR|=mQgPxI+F7v8_&$oy!g@aiEooTy3^0A`&Q)v-x@E(V`joWUi^5Be|<7P8SWiCb^c&DWX^; zaqzS}Uc5*C6(0?~ibIp1gerS2?0hFhOq_=K#dpmChdNuQKKoc3dL?zjzRfKAe3mrA z)8SvCFe#}+|0E%*nLF8Rn(i`lc)GsZC(bpw*;SfXPe=Fr3J2qwjmfMJ=3VP_C`spj zSI2X!I@4YAp@x^>o0Igjcgg74qG;SRKz|Ho6w^5bzybv}_7%xLu1{!v%X!F7m6)si z#?hT->CAFQtzWg=xm{Mu^9kLrfk1k3VV9q$GdaiRr4fXrH0M3~Nhq25|WyqvAz_-J?+g2JA-%!UAo&%d zfK2*|U5z3A+Fasqs2$Qm!SyGw&y66_+@OjOoBDG%kd}*ekJ20?+4TVY>8&uC-~>@6 zK`9&mNY!Ip3^Y5+U>r&Ki6%)an9(k4OqaXw++v82I$HydHBosIH2q?(ItYf zUkQJCH%(wwehg9DzMZ$ac9~m1%im1n@0et=2IBoqh^2Vr)hgv7$4F+!xZUUyu9XeF zyZew2i9h)Wr-HE?TOP91p9dP%oj21MHsUP~c%2-uYJXt_)O7t;i_#CrgSqds)7>2y(02<7k{1;Sn+9e zgx!phJLU0S{x}`}h_MzYT8vnGD@n7fI-ir;*%^5yme_Bw2!*#~YxD9z6YiUFOi?VK25d>!r8>m%w;%X(hOH=d8SMV*$;vTr%hrBf1MYI&ZucPaMwjt zkKazT&5VujsR{@thws?=S%kgY{Ihy6nJ`&$_hss5Be^`uNg&~<#DlSxn zYL1?mfsX7DCJ@ovTutxZwztMMw6NQ}UlFyI11ZH#Q)_a8<;{7{TX_f3l&>SyzZi4x zMcSlzXVc^CNVq+nz0bAU9vIFol@M%mUM-rZU)tdXcBL0q3ACK_4Iqnm8U6PA7xky# zcb7hA>5>MMR1gbyQJQk@TJQ!dpRsW=?`bnGv~|4J%eup6Es{Du5KKZ#spJQNcJ<9~ zjJjQ9bWKQ^KEUu&1tR9msOWWm!3 zQ1^X)yF8IA#~u4ldn8^3F%OdwsEQZ29jRSJX0&c+AI&)*T;?|Dwa)RA+NPu%V$i>n7s-^*{UJVnN11xIxxP&EbI*mBZ3}v21oLfxvV_$Mva`Fm!B!oI{ z@I2;a{N2mq64(BI$S7hHX^x)X1xN!|%;1~9)03>}-qKpn+E+>hEO}Ls%PM`gOk_iz zs~kfwt?sN=nS$eCI-r$xb=j)0f)&(V(!~NfD}K}y{q zBs%=uZ|WT>fBAg+wCP@blNZs|^pQll$_&V>1LMp zOQ<7A+A^S)-9K}SmC-1OqzR3h`;%E8^KyT-#URjv;@-k2Ps7QIBIb@rp2j88wMY05 z^JKHO$v?)_t4E*PZeaQZ-bthcq7kobp1qiawAYIi?>|mg@m(*l{AL^g5q}&}s^PcV zy<8SjRI6s0aIP5=PsWemdVGFBv8x~KZg0m3r*L~+1#(*X68_alAkJ_|yNNHcC+C7Y>bl+Kx8=B2U=X1a@FU34?r zND1UxEUu`=?5;;kWX`I{yXwW^YhC?|Gm5k$qU!tX{Y=eE^zXZB+H3}PoGz72Jmr)@ zrs?kj#v@;Q&ujd1w^|;zlpoIxvNPOOsYCm2i@!Rt+G@P$r51c48S0k1a=z$^Rx(x1cwBJP7dw%5t`;rY`Ndh-x7@FqQI_@sBaD~zx_{{M9BV%DkHyv z_GHuusY%DO55H|zxs}2M62SLRW&@-8H@kT}A{NsM(hCkoe#5<0hn93nX#$v*rf#5i3BmY-TSD!n7L zYEP9KpCv2ZneB1g;oHqF{SNM&a3=A{7w;)A!5@S=_hlSENq@Y1SE7vZw7@Ht-l@=W z&)VFul6bzh88lfN*ID7H+yQDFmTAQF(|LcTQnjkJQIcLz zjS=R1^i^Ll94JWeMj?thbfqw+!B$(Gyr+IC`AH@S`Ue^1C;P*o-GnPdhdf|e2 zPd&mGDkT+pBv2|^it~vuS98^y=t{G>HxKrg2(8>Om;Zr`*;I;H%=w*vfyd@$A^EO_JdU`2n(FC8k2;;+GAr29y!=?Lm_vKQA9P;H zlhqE7V%ZF>UUlzdD>KZ(5n54~?q1oY?RCe-Z7v+`>0H%ChtRG);!mGh)Pyu|U70~W z0EOx!SUq>$%L0-BF>#h2uEyiW@|>-*hW9Bq!+LKqPHmjz1o{LGN10Ji)mvV*-uL(r zBpo0uPJG>WhOWPxuWyhnHM+4;ehhm@hS?=Rr_8*(B=B5Fk}OMZAfyduWFk}D9yOWq zy!HcNZ~;F!9fE_giSdsI;RXTV@j+3i*`&n~c+Dg+zT29~xSy zt+NWV`6?v&@i@s%cF6BSB;imdV333!K7rVqolH_>7C4QYUYf1c@k$E;G2!_P@!-Ad z@$$RUoCb%Y>~>Q?wCSmy4~Cv?G2p>Bydoi+eIfr42@ox=Y_VanwDFm4L{r@%=xmPV zH%Tr@XP<-uqWJ++-#OF0o&xpNX9Q&p$0iORF*7{9(~B*a5pJPkB)WK3cD~;~?>$Tz z=zpop_HSJ4uE2N*#-{w?l+|Tm;@8V$qtLFe9CTvH7?UF8o8a0cl}JI;gtYw}Qd0p_ zd#~k3a;ErRVfMv)mk`ioxX(vGD^r-pQd*X&{nmHJeGyf-=j$lE>SuWmFRj9bo#^Dt zXm)pV@b!jYcFUMcZ3;g5I@4ZvO=4{z*_pr@{ssHnsx3wIgiBvO-&kd0)5;r4?HM!v ztm)<*6-0oP$H$Ye)x=<>Wyw`&j^@1Q9CZ-tkIR}$GKKSZuFegMfbx$R=ALQ8oB009 z@Tpzs{oBj0vYDV6_4!^yo}x>u<7z2(sY=a8`B?oFv!5K7y z|B?&ksOHQ~ctOJ7)V8ZO3em;bjkrDD^SdHcXZOYN-k;_QL0869v;0ZIhh<;dinn-J zy;nGvJzC-zN!o_-EIDPK3mQOHw#J;zsl&D_oS<)RsI2A==9C8>kBNiOb9YDwXKr@S zPixPv_H1m`3M(ONwwKAtyq>l$$8$b;^mvYV<1q`JDU$)8&nF3{fGbS@0O>X~55STR z@`~@bl06?}n#rr-dGPbke6SpPxhmGtsIY+zaCGA?LU!JL;~4R#J9x0G$SNSQ=R2w< zATWi234%}WTX^lQ2U6+2iwm2~5l`&R;?oJ+@yR$HSj6DZM{48=%uZ~^!mW@IDAI<*(GWm^@Nl^8=F+TOqgu3 z1W7E~q8LGfR%XFSuS5>37d`~nDyc%B7YbP}wXlz#RN`(kU`EAK& zq?%|YJN|sitRy;AO|82`y+JkQ++I z;&Zv}&X&*7QqB+h{ZiliHgd0dO4$)F=qAt1uR4q-NxZMe`r(sLIu9?)1-X(FID@VN z91L3!t&M4+B>-+|hWYN6{+`@%^Ml#)!&TGe1~<98+3BvkmvL!V!ESX9_07C4x-SSi zX;j@8cwUJTQTDM$m8xw@qVu!S{pS98#|WL>oRXiOL9hHNz1#E{&ct!5np2oTyM?k- zao6V3)FS_}j2`&jS__!Qnji0}f5OVf;%!u@J-RR>E!PLUfA~WIIl3QL?4@nEb-vZv z(eQn_%fw?5HGfl-riPB)y(}vP>)$x&{cOSFw**kdzMp`P%>XalI~mfa*B#NP8Pym^ z(yOV=nZm0bkD>KNsr=Zlm(-yFcCKgN?n@yF`|{=L-Ri>{hc!eN+1;Rv&J7&n=^JpOPu_Vm_#vEHtMA!_4$6gF~@oflCL0yBs!-1N;l1?>H7_V^_O!#kAxQLZD95Z^^O zr_6&|0bOArbvuGs3jH*-Kd<7GR4nK9vu06^ww7w*@BN^QDUl%H&MW;0G_ z>FuaDkve1_lcR;ETJ~Zb$*zr>=q9zrjqHw)EHyqldPzz*6!e)kPj(p zQp$?HdKYTpO}|A1gF5zcPy#Q^Bdj3XkdnR;Vpx8D;PrvIXtx^BxJ1+Nr03P98Wiy+ zHGExRhiyjM>FuK>OL6d$;yP(aNaZI-0(q(PHwuI~uONE1kn1NQqECzfGBl(qsq?SE zCy$7Rmo*SNB137AhTVubDBp2@%OqfU#I|Z^W+Y-!UIYvMAm#R27lIpZ>k|*_0Z_^Qati!c$Tv(WeMYE$t3ZaYC^r-Hda z!bu{VBG>X`OC~Gr!F*kVR$-J+9th=i>gK$z<80L+=H7ihe;o9u?fh?x`O!}7N6Z_h z?!Ve}x|vN(d#fxeI2ltiIb91`bW5Gt^4h02NX+L6GY!{`he zxo8(_^`6j5IPB3wRhqE;H3V9-G_M#R=i(m2#U9EA{<;_CqYDk=CS?Ag9pOO3_7M57 zvN~ynt&`b6UT}Da^B#FA9+^bO;H+?~yHGpNFQI|CS2AyG#0c~)3jyJvEJjtLkyX1` z9`3&zLBH_mrR3A-zd&@lk^qL=%_A7}{wF+#;wk>C^>$W)J#z?KZy$8yAcR2))CNcd zMt!&I8+QRMx_bl0ma=K|8Pmd4Fu)!4r2tB}S%;JV81ce_T|#RbNx}twhD0KF8-r z9lx#gVf@<%+CSeBuZfQUU^$w{|0cr2UKh9qIOb~SZ&e}3_Dz&2V|6_*vJ5_M)xP|y zkCYkhwpnAKfOf&>>I%$EY6nJ&QLWh~TRJSGs=9)ufEp5sFDBg>CqPGNd-n@Vn;)nMuR&C3T~bi*9H47-T4 zd-_2udaYi2&MRsUmOcV6gN1tKo8^FCR;a!&*V@7zphGvPRjz=B^4>2Nt_nHMILMt79675o`=qJB878R=QU8ZXIv+S; z=^w7Hz3&Go8Tz*m4^Z<|#z$PtJaojT69(A~&vO##7X)q?1tiG#Nz}pAPuJ8Bp8LnV zpY8cT&$D1eH-zw+?BYnHzo~6)OYXCMskB)AP9jm{pYyLbPORj8=+`5V&_6~YU6ARu@|Uj$vcDMQF1~(csU{wNCExz1g6XJT4VX8Wg%Jn z8=#Sa2b+@Fj-wTSuP$^b<#q!|Npc)pE;h!?mwmHXlbvc_ii*&N9(Im)pFy0ebO!dd zCFJmo57-nV&mkba`=1DF#o0h;Enl=Q`Qy($6mMvReiuI-v~`D?ieWXQ*Abo(c7iY) zCjODKpCD0+=s~O@^c^6D&{v8LJqDB}4URzIT0f{7htFhVLdOs8Ksz~b4O1kiy{ z^x37G8bC~}oyNaeby*xHPLkn$k11wOUglE`Hey02!n2EIlhMm1I%P>&O!)Xkcs|%v zIZy;rTNu6EG*ij2jXd86DiYlNN^_37Bz2xU6>2@%RARZ*mNC82Y_GtthUN3~87s=S7;HXjEDWS0Y}p@lrw(KZY6XmpZQBsbRSC36Z8 z5ryvEp9~F8*%y-ha$C8gF1ltsvD&tdam?|w`RMP_v}lHD6rk5c+hyO@(lWmGysY?11=(HoiZQ%KVIJ@w@ykYg ze7LUnsA5Rm{vV{^KQ!fb2%y%8)BpBLynP^)kO26V)xbYmtmY7ndnK{~P4vP1cwYqv z>Y!o6-4ZmODmemZhO#+Lh8d^J7|8~}jdI%AV%649m>D|NCjU^QH?e8~Q|hUooqW(K zuwn5BW~7R@8mqwRgfsP{`oCx3*S>c03(^TEGXSnx`1!fSa@Ll_RU!F(JSzl1UKI6U z6~E)Q8w|@})eRtT-u{RKkfhUz`u30$>=SKQ@|0!NcM;QF->dM9%QEy~lyfU#*gcO@;K@nEQ`sH!oj}k-(7YU^{Go>HCzdk*?oiT36$q=BLn6V+^o>BOQ z_(nkwFJJ>MtUn2`%6W4od`fKJa@=^M`e$_FQXD5l{%IWh z$lq+(n-fkat+-)>E@7wP%m0DdfCX&~kiodOIv7Vx@Q^=tLA-4t*gM%t4wWvxbD(;I zb>fIddIEzK`%v#=Am`~OO9OJT#Kl2*onz%$Mdp<#MhCs9(2enx$JZo)MArU|kSejj z(X-c-WmbTk!{_ho!2xe2sis$<@_IbDigGx%4=9-6-wrgEuG{*9CL>`7aoXbO0naY3 z$ezV7N|bv;mAT5pTyfO6qk^!jyCY*B0f!yp6%gEj*`q$X#U7HfjF z)p9usy!|755f=IEX^JH!W27$R!E*3hinLd=QmXaDirMXwCpcT~+s}L{(k?Sis_a}$ z4w;4lRY#JxY1Wq(Hu>_);Tn9Bbr!Mh8kg8~~29iR!0 zKj-}d)~{=ZknhrX0tt2Hz|$ZXV6{!i72xB(`t*FzW^;>^Dgxg+A-IawDLqH6*mlwV z5K^HcLnRK^o5H8J)}Y1%FQI!jm>&Cn9DnNaJ;KA(&htz+L~JE+@w@i@UB07*dGf*O z)R}RZKrnTe7ejIBE6J<)UuRu(o1?iUrCp6|VwBS-lIsaJo3;q%($a=0HL0dtcpL>x zgMn(O>mu~^QP#pMIdsVWH6P1v(~*^~S;+!?ghJyL!trPkS7KI;arc$~zVXa|ACbTp z)gEARhODI%h{v)0PP7_t(d#N+qHM13A1=Oiy^x~bsdpEm6rZOc{P)V@qstnCNg#Lj z0$dfCRLVBgCgK~C@gC65jQu+x5>T2S^e1h$6N>`4ab= z`0!I`<&ST5i6?>~v=h+<93wOD384P&^x3Abz9OSG_GUDes1#c;@^&N1jUE% zthlO@Wz3`2_~!a~ppU4ZUbI79H+@!xU(IuxgvM$Y@!9p$1BMfjZ!@S(L$xe>L&w>~ zLcG`*^R0@Qt^vxuWUJbDZTg$`z0 z!pS`+ji87JH)!g!dq)yKhFdh%K8^h{SU@^2N8Pq+iV< zt9EAeyk_)oFb>JGr8n1aztAl!?=a%V937$9-qvvI1kyP1FuSw-j~tiC!j(f$gAGZ+ z1OAG2v^m@{DvI6#dX(G?mhs48<%}@~;%s#v?t+3dXf12zJ!T(O!Dn5})W@mrfg=Kz zQ$TMPh>#A4JQ}oAJOTNm7>O9Q;8t#`Tz3J-Fz%c5X)aFo^v`^^2J01GBr$)1-Xw3@ zgyJT4?Xt@?JBuv~OaFJTwnB!B{{eaEEA&VgZbIQ^sqMH*6IuH+hIydA!c!*l&clg5 zK#TA~g(i)&39(aT0`EQNku&%c(>fswlZDIfU=K;_jQ#-rb{*O4 zT$nOVk?b@PhaYwJ-T4O2`~TY?0#5lqovFpW$lAZ4#TdmY^EK*c;3*UEKcuK?Wq~wO zVu1{4aQ`k|{PMhk=Szo@YUm94$Xon=^3Ie@M>Ci8=J_)O*D4*zoS@j}fGj!<4#-%) zb#y{Kr|8&dHuoU3+qjC<(* z^~nApx0#=zTA$TJcK3}&gEREAnUa4>@s%unj>60uEb%=tioaLJ*>BNryoU4Qy|H!< z+Tv+n74N8;-~ayu^d+GObz>muc=b@@??bcfRZ1MjreQ$tFs1s%h$O+hdd*qbm7zA5 zAFex?w2ITFowAcJF>0o9tnJpsl`A!)2;nwPe#dTJV#Jo)umecJ#>=5vRdN;zAI*EU z-i}e1J-DzQJGLERA(LE-Mz1Ssf72IS4=a}^(m9Q}N1~}*vE{PTUPT+DdXI9HMo_V! zA>EXBQ!^S6+x|u%wuxjljlSQr{BrXv`TzUZ1*9ZI;W1KRQ%e$yWfkFwY!<-OEm1E% z+Cohfo9NGdUr2aDV1Wo1ROfdv!O998!0t0&y#3(=v~3jMCihw1>$jz-?5G&oR)IDN zCgz2SOwB+(TCWBv@L~(#w#O)R1I2(g4KzkDO@mf22g8XIitwPoy&EA)s>w{524~$m z4j6_ZaKRI8MXdA5mYpn60&?wo1Jr)#^T%cm@-r(q5pyGB#haE%MK?mW$g)4n zvwhWEQ%J0ae^68=!TNywiJY$#{9UNH@|JXIP@7Aq|`+b zT7H2`;)*#GRRm9duag60Q~%n;*);fMk7A<6yd$rih+-*Mp9tQm1*F(OH%Af^yk)=j z_D0ls(RMe5g2Nxn7P`BUhL0l&cSZox(fbG(HWSmDV<=F0VA9p~_?0=_lJ8%J$*tM) z1sp?!zH*t50KBpZh^AC7TeLWo4nN#4jl?qE=w;|`NFa+TNN>}Oy`Z#|^^Z=LGyKs_G z+9xx&*Rr0i0aBxrMB4xJB9nA*34j;5@d=MCU*UTyCoq_Eo0U;(JEq`ZU-^Of#8ZDL+j|FhyPTw9YUdz67KqT;c z5AZ6+riOA``~?1`;gS0#N$8Y%*M<`Q?jImvY@t@(1DxIx97_5SZEX)rL9 z8`-gNr(%Iaa06=}wJ-j%#ipI;>wR{dx;Xpxqk6ly&<*AwKQA&jTjfCHS3t&nkh^LZIHNqc{kx_&VAQFvI*;cBM<$Kc)sEi)G-C zsR4-g&suC6Pz~zS6~T5Jr6fTPWsT)(g|>r1v@+nQkF|=F%xy?= z0(jMR+A_EbEnhLO(oXpgfcVGHe2_&1`c?S`7)WsOdku%9zdV8&V707LIRQ(8V^meS z>Og_X-F2YDqUfT$BYL&2W*Sh97E6itcn-P)1tH_(K3x~AdsVCngLc0*vFdyGRXe4O z7&YsPhVY@II)Hzcr5SrMM_V*m=SI5uoYR1S?bk>jy(!$H9y`N3LywKIZ_;imez$bU zS0B~JM_DjYXRHNitGv0y){C5p20gp>SRS|Pez-~XW~622&ljbcTP(0Y`fe=zVQI;` zAI@>@7oi-3>vcS(by>MN&r=Lv8YfefjkQ8*;sc7Ke=swxdb_W|@M{5cK-ImMg9?Gt zz;(I3@BekiOs+iYvL?!JQ^NYcnwixf`AR)shC3>sAcC`qJ&yQDt>anT3+BffTXLQ0 zOySEjvPY}1zJk&?O-U2!kw4G*`B~)^uQeQms+SvpC&@h|^j;@FgjH0I(3F>1f2; z2hk#envK|Uv+P&(VM~Rk7=0&Lb6r$^$bUQT>LQnh)A7YOYJQK0nt`XY2=zZMlL3C1 zT=8bR|0@PyIi)e~pgLY{2Ug&Q2}YJ-Y|NZfp*vJ!kFN??sQGevTh3S93rX2iIKSMp zbQDYh|3Z$_eO$wW%L9Y~x(eSdepAG$1tizSDX+R~`LIKVuBp}Z)1u`y*=klc14V4E;qKI??GM&F!Z$dP1 zCX7J#y6Gvg@@z8Jdi>}JqBkW@2zRKvB@4p94-p+X_@6y@!ht&FgFoQ@It2?tsEa*4$o~ zuDD+j|Nh%4VYeWRx+)sqTo?IJ`L&BeL(NFa>2A-3uhgvIgFsRNGQ^81@CrN*w`0!=nrw5yupcjIPBK#D9i0#+>mPyR=58r$@dLxJWhgCiU zZKy+W*iN2}*^%f#vdu(8%*OsKfX4p>n)u`_2TL2+=ThJ+Vb(<@HIK0C&Wp>*R@1x} zf;Gmb#1D`b{Xf3@b@y(%wYRxY;KjubTc=|mL%cRX!6ISwd1+quz(T;?ej&b7k{oy( z4C!m9*sNYVi+wIt(6sC1Qlz@CK*+48LO>zQ3;+|q=4V8@gG0jCyqjZ;LbGbuz_Olbd}_?C>tzx2wa>j`x2 z>eoE!In<4%ZM!Qnt4Lw{Z&j51d@Ikdnh^^WQ~0y`oR>fL!(5d$HYalZxv^?neWNiK zcu)Q+1wkif=?47YaSdLp!Fxh;Ra4a0m*=3D-$2FW}azE z^WRmi{aIWyV?Q2kxUbBo_=H-Qh?+(kH)@{T9D`akbbwQ2wJfHvGg^w{1+&B1B-l zLtoWtzUkFib;BRAQ+Xku^J7kJJA8P2epsYcL?T6C}tji5^Nmeve1FM7Mp4_#ga zr!ookJUYe7SP7Ik_(ZFER3T0$(X0ifK(FvKOr~k*Yh%X>71}GNeye9Jn_)jliQcn; zf^SqL{-?Iw;{VZfmH|z^Z4_5T8X2L02|-$<1tdq8FdC%0M}sJcAT`<{ zT}pR~!03LTNB{2!^_#?=?Y^&bopXK+FrcxIHnrcR2aYD{w|{%sfr`q7viGB2d?Lu|yUg?Fx<}Av-Q8=wU39tMq1sZyCCSs3 zBp!f}YGVQHINAReHEi^#gnH&h8%hB=C+B-M?ib--IS|Ce{UBu5Yc84G`VK~vS3>Az z>QaFbj_p?0n&*YEF4d+X>W7%})q5U_Dqmm8e|1&iA+t|tM}PLD@s=O~sULeHxlou7u9{*6D|HLPn!8%k#`Ps;#j=YsO(;*n@aAwJR zk>hboE4Mx>7%826t$A^g<=MvLn3FWiTj}%VP3A=_9l+TdFgWWWaGV8)U9Yi1)6M+)##Br~p*Kpo6lQKxv&>{1A`3 zgEDDgov?BlMvrs3;X|O`T_tp7s(NsbXIA#Q^BaUc7#r>z7PN;{3F(zrea^gUNnd{+ zc!1WABWewYTG&SUW+mXff15^a@i@YUj+4fi;#hAo1b@Dq+_I*wacy%b3T9}>EjwY# zgN9`jJV*&HF+C@)c`EXIFjDrTN;|(pVxkgpa0V^ z2Ak9lxdpBs#(Y5t_tyRh!bv709j~w=M$ZHxMQrBzqlA2i-KnavF80aRou(Wdfi2O0 z&k3Y`Bh88T{cWow8pYyq2239Z_5ld3!7VkUYB-Y`nd#UQJj!SS`~1jFQUd)@Xr2Wt z4g)4;P;@E@fi~6~DT~$=<`3`$B*p#QL>zifEY8K;$W)r8B#0@duH}%R^J|_Jljaia z;m9JDThN)*>w@2!L>S|b#fH25g0jmrkWa(!G(&taEAMZ-$X*S0vJeCNo)bydb*fRt z;%f4yordnIL#A{!rYj0faen-~%ZBskx<(SEIq<^fPDx&xXSZHjJ}T5tlixFQs~o74 zh?mV7);%6pYOH;Szx7N%LFlM5MiFB;P`bdl(;2z|NjW4AQYt@L93txSjkoeOpqtPe zPZRt^9Nno2h2Sl0zuJ1{Yp3E{mPgZ70r{aP5h1KLW}BaPOx!v7Oeu!ER*!xzNzb_9 zSZq#fD>PS$=X0!1Y^SN#$yBabC2NTBq2)>czh{&AL+O)ySs$s(;=ZKe0rKiXYDglu zhqV8?80vPH%5n6HS@X>#`}^UYot7jA_&wbcv)4dH_uTkG@*hp*$evrlm*BR^XuRj$ z=Ozxtpu<&d9$l=`Tlr{v0rF6LZj7|_504;QV4Z?(36UGu=xY#Zz4abxs*7!2^&6P? z##7%KX1AH ztKs+)N!0ODTK+v%L%>{xOR5_WJtbg9Sj%k^VW zZ>ftAood9_QZj_#cj^E;5GQjpg=XFeSR+LN>I>8~mgP^>@qGk;p`R518BCn-4b`!fwp3W)3>Cj$wx%T|8mi*14+ zBSLw4&0v^3+(tYC(`5t;N^qB`xbt7F9S$j>T3g@N_W|k~0Ux?WE;9v)G4(8ye^`g1 z2kkwA#kn9p4x}}|+ii!(I2t&P>y)47y7`VhAJ!(R`Dom#5%A>vSr5Cj$3>yuz@WL; zwBWGdg9sJY6@fYMaB*Ht^Q`8>!fKPuR(>7EuesgoZg!;}^zIPx{HUCAyV55{iyI}F zDI^_9*}*4EOEDJpdI=la@nIm!vOQc>QwnWrK&C;vnnmNN1dz1h_C z{CBl+VP3XsSUh=t%(7}A)GIZ6$-9Tx!r+$v1#xX+j|erl#3tTc*}YKNhf~^DWghE{ z2BlV`@hdtebwtSWaG$A&;;8Gq3N>X02+7y6G@os%E!8uFmfEnEVH85r@S}eA)2iE4 z$T+KbJCzGm>|uCd2;I)2_=ryZR_tj}HuXC7mj3LiF`cUsd(JZ49{mg_XuHG8ZQDze znQH2W@k~AATh-X2HNm^}H5rT5yu~R8*4m;*YEa_C%?^jfhuy86mkB%7|GZXC9^&%#Y#1XN;<&BXBXhHA(kJ|utjk@NjuWAR2n{A{^fDmr% z%l@bT!t-ks-%OL)dRp$sD?wgZcg*;K@66m52{w-bbz)&-rL>65R0PiiPpVqRLJic~p;he%u4DE^*KR6n=LJNp z$mDwN>W|0YDn2|-IWxRSHfF?oRe5PzZB=_x=c@exVW#e0$&25k^>ZG8odON;8r)2G zOXV`wCV~z_d1$}Z52)V$_nG}8TQ$jf1N>od&C708lksxkuyIaw>W?nv3F}E^>Sez{ z?6Z9>F)f>2b)-UDJ`37>cuhypgRX__%Bte$qdeO)6n(!>dgj=PJKe^cVV`)~>cv7r z%ybxC8shi%Jkw`;TJ9)q6FTbiq#s+}*4ZP}088TEX;Bl}uVSMA7nM$F$b7|5M@tyV z-Qp>LNFNq5=3$<0ICtRO+y22H2YoW{RK(u`WAAuAV;%(Q0MZl? z_obCE@6>-N6eTg27|HDd=s)9|7Ri0IZ*9ja@QMz@q%O@G00vSS%hUhwnZv0jLCL*GLw?&mQ!U`k>vOWFiVxOuz+H^TawxJ7&q40}7FsPJzj)=d z-?a)7egIj{;&J#pxG#f=+3#T@xX%3Ln$Wh1wg^_nl)&>QUq=-pfav5;cj}HVkn#s8 zJ(X7nphDAD|9?S_IS7|n8!RF~gQKk%34iBnQyidkg^mMcTK0ijS8x!mQ`>E~R^|^g zZj(lxS9J(Aop@&-0}A$guXk&bB+!%2hj!5kzO2wK{X-5 zjOx93>=l{-T{wlnN6c-}mp7iBvb6O|Ar0)3}EaUP5@gOQJwXLV4|wq(x9yT34j4k+_&{C2bm>c ze`#6IU$7=E16WOI_sFO{T>5j=xXXY@F$nS=|Ge-y=gR&iz|-F5z2d1`Pt;at0~;o7 z7t}EZ__Ft-(#c`;TguvPHQvY#;zPm@xGj^7gr1|JxWLq6TX!3*29c1h2A$Xe==nY0AF1d(w zr+)#hqPDbCt_XlbR#gEE+is}%FE0W3cV9P^qqtKtc6_KW?6rPF*m>Z;7oviT599358&4TN>{Lk^dzD5mA~qMI~;7sHoAeD?QIRb=BjO zZ^n-{i*t+*pfr{*9qPunK1>B+(*b;tx+_>bYl?VX3)mhi$v>-*U0dy1cRNug%a*GA zi>7E@#zDDQpY8UY7}y$L&dX#2+fsC>P*a|9=hQg>gnGGyeZGNWuYMK#Ikxcuozmrl z&F}St8h+@6zO@WT<39VcRG+i{qt{3G&$JPXLy~&NFw17<&}6Vns?In|Z~AfpTdJhI#hMP8TQ>-{#6HaY1(@kT6#B8_BndHZ`I+k5 zZtwpS)!ryDU)f3qBk8R$d1fdPU<+|h$==W4}0+J*gDZhEp9XTWVqK66|u6B-JRAxs$~NSTQM7mP-0fwqvLz=Z4FsUvyn9;olN8y!D%?l z`l|;SKBC1fGGCvsqwsv=tc#=2g@Yu5i6$n)Z?iyjGxPX5^{NP9WHK5_YxCojL ze~D4yGE}uh$7`s4&UHyv91=N1W9oOU?9B z08!Yx{1)P#Coex7M;>R6;&@SQ$wkf>hil6pq_=tR)ak*1t+`$^BhD>Ml5ASAFt<`K z;}V^3dRTrj*|a85H#c7J&W^=cVXH5Z$Bn)pu>BR_xo!nn_bdmc%K9w97;WiHtWBlB>p$-|{x%QoOqgtNW z5L!5XlYrOg@Aow-0nkU4p9e&BSm~`Hf^bR{-uk1$pBfF6BUEp{njP6fCF@Rkx8k+t z<@4qa`0^<)fZ38{U%Hu;++Ix;dMj18Jvex;4jg5#8iN8ZOIw*AA7%Gh!I&T=N{Zj! zK?cSct4WWPX98SE^Hhz19$0qU*~8$WJnAW>9H)EP+%q3nGV}{2eAdlhNHq!j6wfsV zX>fCy24%ftYdzOe4~o1b#iT-68AKh2N|tlt0=pGU9p+KTLz}tB9eFeIkK5yHj0dWH z&JFZ7__D&3UmGOPt7+ecMnF|h891JXv9eT;FkG^RHSPUe%u=Xb{DY8?b;@}=+V{_2 zlFI5ipz%IQm*thJO*eJ$7g(0-ewK{5Sx~?bB9aH~DYPfQ*F9(GX#-mxlf%WRC#7{*YU z(GZQ=Mh-Yixy{~JKZizFInQ2CBB{{ZK7a%d)9sxEPN>bt3vl)V&N_jD`C5vLy(aq9 z{cIkAUf7tL6#TZIN5yjI3e1mEIg8hVu?MUma%kGD&&W&KG^qg)xcsNiSz3 zvE{98@{@MQ;-jsX^p75!fPI-pZqKq;c8qqt^s)?!atJ0(lGLU;YxCmjbx)2bQ;O!t zUeStNgHp3+iJzx7;EOaVTh&uStE@P4Io$uh5yu+T_ngqwrYrj-8v=>G>y=W-Hh^3@ zbGEG}6&t+9*`^XAGq4=EFH9YB7t4yfh3>b|Y4$K`IbcyF)tQ@c4!`Nn?~|-upJFd^ zf-nB$>-2CQpRjk8Rv~<28TD8lzpe+AUf2W;Iaz+nxe6m;r#A{x>bM#BCD0hoJ0L(Y zHIqm?ngwT#f~~J1JM4nUL%-4zcwEjsTKHGO~1;EZN6hRJr1ehNUd+exabJ$E-B zQBI!LZQb#a8#X){*cGPQj~HU&4v~Oa!+0IO*RuNRi0mxC3WnVVdNuyuS5N)H-^({&RFxttXIy#6pv>VcPxCmolq<$T+hnZhlk43Ft^1dnlW6+T zumcjFbEpHxU2cf6=vMDp(Nh9Grl(iJt?s(&FuvK4l&E=mJ?7NXggi~-%~QL_Nj3)N ze)@}@hYv?%4(Z(FFL`J}^`aN})z*01<&@hm!3;+iChTI`j-K)*@`Nrq>fuoP1B0 zYclNqa^Rv;fT=Q(mFGp4GbdJnD-Of8)o&u~_>hl`gCVzRS(cn3LFp933Qa`$fvv~) zr7XX?@U~F`)m}mG(N7IwmARvsRNYd}p%5mb_0MR^btMM~I?}2UfIl^~`Z^2T|nv2xhCA&kHB_N-HlmLkX|G zONP+*gzMzD6mEO_-*sSmMEFJg!J+dK?(oxwI_eUfkKI zqDV#Izdn4bZa@p>xD#Z`5ZBgD-P7 zg>HGZNdvjChr?Fd8lFFJS{i}1{+JEB61B6ufFv$g6w$@O>%}y4RKyh#FgDrF@I_&F z)L^8FhAnr65KnhJ<005sOJmT$7<&?;HvW-L1LCIG6t7`Zx~$6*!$c2fY#+TVE(*W9 zb+wY9!3CxlX75Q|?meF2A0!J3^Ln5>`Al5bPm9_3ffE-DO&;SSKAg{)qZ+_~1rN{P zspypZF_Mk`As2+y&>YQ1b$(>gx2_kAR-ihYL9KEV;cMIA2qTV5q#V4#TEKJWKN}VR zhflS?Rl05@MGy((@;*lpFUn;X%3VIc!Q{`68_zkUI+9_9%FE1+xv@))g|)m9jlX`w z^vG9+MiiSUWs#m|pFZA1Mar=5>D-}rpzETz;8hV+YWBLK<(0{Kf$O2+Xa%^&d;HLb zN_K>5{4bcbT7E#|Qxo^Sof=#mF=9MVoiN+Nl=CR$ zLE&IUy>M*&#xp_*i!vUiZnFr)Y1?~q_@t3CAWFGg?9Tm`ljE5QQ~BvhNdz|!ZAPF3 zMU*Wq2|^h{PCY0VSi|a-rkCzc)=%>?#fvJnZ#LRcYHpgI19{B{Fm#$nurCdx zgQZ=2n`v)>sFu(`k8(U|8Pr zlL*kmhW)lQTf((bMYF&AZlz$K?Kj&%2{@JYvT4@6*Ha$sQl2ryhzzVx3=AySyVLf5 zK0nS7{or^bWMLvM(@FTg3!8? zdQaVMmWG&eJq?Q*M#8zH8%FDQyLx{W4Z4peLTf)vt#c-><{~(_rL=F=N~xj z&-5483V?F@Hlf%M&Tg52e$k&5Ad^wF#n&Vt8+RiaguV=ymgFDFqt)2%Q?{kY)UUnDlRK- z{9j5WMyP=092g40x*c zBkd~6{=1G-`JY|Pu7-Sm%YjXEQv9j6J(g?Qp~>^tyN)i@GC53BnbNM)VJ9ZZ!T4DW zfWO8&G{i-VpPL{M3y0etr zCHdqgKF%WOUdD2ASsX%k`Il~epOzh_0h038V}pOMm+AvJYw`8M?rI31Bge_if%LCE zrpROgJzsm++Vg`Xg$L>7;$8#$`vf3S0GyO$z#ex%Q zBreBFwWyns3|b1SYA-CQKcd7*n?_Ym*(y&v9^7rq}$J2TJ4sOi-3al4AcJ%QRfRtC(+p z*vU=Y?aqdo>Jzseo4(<(uyfX%zVt2XNiIt9R870#b-DLjLNc{`o`!w8+x#2?*uwyS zf_7O7cFpam4)*G%PoTb}Lng9Wn1HHpIjU@ojdoUz`$)%l1d7YQ04sMng}Kx;Zx1!_ zr~p>7-qDPUMS6Fi{YaAv$Ky)G6SB@U*m_nyK(u%`u9#(h(8dsu9LsB1 zAA|{x#2(&}@xgrq4XFv7jI`tU_X7;S>oGb>X}!Ms1H89(S;?<1FdcYon0H_%FaWkCV@nGOK;7Bud+;-Tmai3T%DN0lw(HZAC+>KDPMfTPDTs}ZUF zo<(I+*cjmd^nsXT(WKB4@aFhJZfc}&gbFX8fQWqkI0ZX68fUrwIL)bJ840`VSexGe zxV+*?94Z(F6x06fS-Y7F5R7KV`qgv8m`5`@QZG{MQa^8yj<(%K%%eBH>gwKzAyU3L zvVX43&=reqopo{R+rIgdQ#mg=a^QPWW!OEpyYlOX(?s&Z?qT#iIRHd{{4T9~p|WXt zXZmwndIM4GQOCaoLGPZnuf<#A}z5im`qFtJ!cQQ zj~7MS59Dukfu0>V>6`BW<5O|uKA$3aHbqIO7_mS4eL&LtVyu*7CYQsdfA7nu9x&Dg^2c=xGB=p2x4Ny^kxfhYt69N( zX{FM7^6@tyhS(_b2Ou3)?wE}yOPtJnPF9n!GwG>ly*^*fkK`&l0zSR$Caw~7U~t=} z#Ic%#P4@GIB$GqJojjukm+#-spBDqbc{|Q9ABU#>?m81f?3yJ&mG=|buK0`s<{RU? zG&X;=o~xhlW~ST#A8je^^R4uVMnK$}^sSB5G4p(B1PI;&)m!ZiM^{44n`-0w<1B@< zok(DN-UU$Z^`?~#n-}hKvrap<`a0k<6xyhB!@jH7`W;Fft!4Uw;bjz{vl@XVN)N4{ zKC<00OZx+&8;sW_zdZnH-03m*ojw7_he3ajgo@$6agK-2jBv(#_iA;;%W&;JPP63n>v$-IJ!zw+8F64)hpZOMdi)e`I$K|WhI z{mK6AJf8L%Fox*{>wAGR!u^-E_k**LK0bZxF?ho+wWDT|}@~=}#jiF~#Q8x59A{T)4vM zDia_&%6OGGq!DfqLT1TqZB69xOP<79$W4YHaCrjtW0qgoQjX&_&P;EW*9YGdEm@P3 zAn{R!En6yNG7f$1t#cv2cucj+nIHLtxXnjH9C|F{KMx?cP{1GEyAnqws#5`;%9qcp z&qJ@-xiLSd(To9Y3gBSQbM*D-*t<`|-_7pVuH9sk;fn3xj|;$j_-sBjxa`(o8J@k~&rV%}|62^MbOaBvp+-C=EY_)JCAbVzVHy$5SK zdGW_briX+~2v+>vyWRc=Wc11Q02*57&?cKK$}^h{gwk)lC{8v}H=r$Q4ZBf_8{x8T#)@Xpo!3-PcR= z?YX^w_1UHab-{M5fLTl$og%#A=_bEoyY!$IyKY2sD(Ywc?~r?zOYb{eq$M`+N1zin z7P4xjcVXd>*xL85nJT`d&mLCM%yFMf#;ee2t|JQSjz=DBeQyB18|~^C#=;VE^Gx?d zqBCgi_d7C5-~PQokap#UKh+*dk$!G=4VUTDeHaH4jp81^?xGHIK5G*4h_QpgUd9~c zAcX^#4f*_jlxd-$*{vvXZ7x+0Q&qJ3LKn{it}_BHMIRx_XXLO28RRW1Wm0a6RkSVM z9gBx3MQX^+`xM;ZB>GQ7viO7MAhTf=>3{VuVv?pS%P+->}lW)7vxWCafSXuyQ%afsa zYwrGUYB9RDdy+K0+f;pd+$e?`-95I;ykE{ov)yzIG}D)3pUQWlUa0n>#D`1HtiNDfR+mEhtP5I@f~ z5h2g(7F|NnrWx}&Ow~39B{mU_o7C1f@~$fUvJZwo!wcz&uv_5UpJh9vRF%V4iBVVu-yCWIK_H0h?h-^ zNatbr2ETy1--*Szt&_1o2V_GGu(@$ZA9xDzJP5PkDe&Q0u3HrDW@b!={)u*wf^#7B z;d01rX^4In;M=>3!?t|Wwk;lv9I|@B7XfwX=_TJU9G`Tuv^B@yjYgvGVBKeIk}3S? zpAiwfI8bElX~(KZs*brlPUORq9k#1#vw6R^P~ye;m7kuVTWSB_R2SQ8M(aI$61qY$ zUj%s&yb-EeGMP7JA-tlHL!S$>uZUI^em|fZq@QCPD1CbbRNc}V%Ob8zRNA8g>ds$x zIM24+zEYUAy>ldU$S?;{n}TJII#1Px%lk_07lM zEz?*Afdl0nD4oZ%P!q>??76!p4i-y5l^_r+*-SjeeEoaJn|SmDa#V6dV>spnjPZfO zi5_<;X69B7$TrrA`N&2Db=vtKj7EBP^O%R@$>#|Qw2R=m0&7RXUfa>uJshmfHb!Img2f&;n%gQloLI(KhAxpPG2vCFEh2 zaBcnKf9$M%XqYW6PYg>$G-ZqwaUPP(L>{rg4)y%4S=n!ET~gTS$17c?FlVzSG?L+m zv6j+Ya=nc_AaTnK(=7D$)FMW8+Sbs;zxilm_TO*)SH`y+7ypL6l={S7qrKRhDcd6Z z+O_3A)SyAG_@c8*3T!Rg$;J%9w_a;Adi?P82HN!f&FK?&B|NzVv)vt!Y9ZXF=FnsgipWI_>{4j!bt0fEC5Af;gh$m?iSeGxo{A!jSrqxrW0grZV`h={vYAdz zjR`H|!8mLLu%$F#PsdstiQ`qbM{Q+|c1O(q=Ao=%ei*P98e1=CZP@bzB#UEKsw)W! zGe=V1I7;p0J6h|ly8GBUx;=_D{~$~bRf*GE)hlk&_tY(Qv1CCgt2Bh03~2@p!Ui4 zatj~sl24*cEh4*7IPB*S;$IlK6^9dI%V?a1JEC}-fhD0O7y@5v#cLWF$q3$=Sl~w!Ih3Ffxi4exCOr)D>UkW=!?(t@h_;5?H!11eAzJ>_S;N zJ3c~9LP%|R6Dh|CH2M}$)$^3P7!iWpM4^@ayw^b#Z3pen1dc~YLmA_5Zl%;COiQP; z&QY+kJD=I)haWSWpQ(wg(23SJ?%w}CR_VJMT+@F_zA<@% zlJ>Og7Dk5Z!37yMUUr3+K%1Ed2tsR(UZJ-!K8=t#m%{dygLCs}JvHlm%3XY)W^LH{ zk+!)5#XF_u5#lKP{f{vAr;(5@s>qZG!TQ)Qt4|BF4I~bD%w|v-cJP|*MyUGZ1ZmV( z@*cw=+V=Y!TFxpK*fgLNl+!DIg;LnE^gXLTzjyn*_TtUo!#LHq;h^fGug<@r{Bop#|uUYRb$Ur;Ye9k2A=dMg3Wu~ z(96Aa8(C`5>=z^5@hy}`nf@VLh{V$4+hy~Kb@8&&qaI3LL@vf|N`(x%Zg-o$N3eNx zO3pb>{g>*kY46QeLg`G-X|-Ggx2E*`xGF)X11egwvH4c3{qk#>l+z6*Dbc-t#zpD{ zruvlSeq?@%^MR_Frt{!F)|}xxN8x5d08aEzLTg`HjS<^rpBK3S^eaF|>yvbAK{paU zU{{gkjnr|a6yojT&#d;{v0DX0oxqKcEpIDIK%Q!!4HQBW0ZqMm*L@F(Jt?#Uq^+1q zMqhg-9rn!|d++F^_|iI<&hT7izC*ED0z%jCY1*9gvEr@i>p#y#{`>kokzy1maEkh1D~7 z6^pUY+RoX9eJC}q#EKiKA?&2Z+5nx z4~x-wxpiG)mkqEHk(UpXDc+M={-DCeMh8NVL2(NpP=_vj2g4S9;82@FOG`Kf#K@vf z+78>qRBy!g+U{Vt06xGCyK3**?XpjEUj!!f3&40T-A~4UkK6T(@8H!cx!#=a@l7{f zpOMGBiTlsj;ScF7tCR*spCCcKBP=?}L42eq2)DEdq%UI?Gy_frtQOdi{_4QrY+KXS zjw83&pRX2w{Us-$4F~(!Ye=8|Iar`YaYa~q)28VvycP|^2h z!ks?E-sXjULD^T5BQacT@|Pq zQWB0mJ9>NGW39lk1JIp?bOLvdryT*uqAUD>(djd12+}FX3q&ykNaW+8HA&m_e;+Y8 z!TXc`m&HE2K^Z6wuI5T{$Fuh+FK(|_!0Sb)z2^TT(-QA}3^h<%dt66E#XhZQyG+yr z#Ck#C_LfgU>-ACf5npT|Xy?lG+A3WI=G@A8TpSeDN)SF5D=49%1SVf;pM1Uon9LOy zeAJlO0v@Q0Nx(!>j`xI-*L}yOo6;%~RHizr(mN>JW5#t2E3tgCY#|Vw=O9SB9EWcX z!l}q$9nE6FTWMAsW!2C{nU~%I=s6Up%ppoo0F`_~BnMC?cI2jY4IKoax6A%>JT6O} z%$NYz@YcRq?uLfTtF@c4O>u5x%f(MKBL_*a^|T}ADlq=*{Zs#!pe}dC`u{VzAux21 zRLt5ALg-BVR`y;9%UD~iQ48?E>S@Wxb%L11)${FYZm>)7ihZF#s2r5TuA<@Z_PfaS z7~O!FUkN)#T#K9 zA|U_y{2Wd1+f%AXD;&xBMSlkevj|Ydix74>Yjq5coYI3J)Y!lZRR^%#CmUa2>y|lJ zh<~w|7NKU}S#)X=t=~V63w>91XI+bh(_xMh-PM<$WGH#aeOoq3Ms(}f*?PKN)#Hd$ zBbwUzy1MhvHbSdzw42lQhFCdSCX_o?-+&yjoi~o{6w%p4Ow4D2*bksZlcR3zxn;v@ za=Gu6BWm|#ZRZK_*h;Q+$u8K|v>^x#Tx* zLu)>M{^bJ|lk?{dfCaVO%=b^j`a~*O6z2LB=n4aEdbSI|R>g!1G+GL%tBYg)F&yB8At?&7edrsHg|@1h(Z0Mu#gA6r=|VkD+_E;7;aV z_iCPIQ?zcO%2+$e6wBVhi_D}(^F23s5R}))t$>pn1z<1@@8TNEY~`4JoAcTppKt6* zKOT#@U+O8$IMNUc;L#rjcRpr7I1&d?_uabL(rY!ac&|L&P@BNyP5A|V4H|0Q=fFtd85|uRQixK4iv#NAa(X#W8&OZ-GQ6750p#KGp-k!5QPHJ zu7-xVBU0_cU2*Vj(U%uSYp|UFFL4x8oS|9&D4V>EDNl3(a%Ss%&OZvq5yA9<4G6HX z0u!$4Qdfrtel>=#RJP{o*3;c9ZIyUmj`0P*q8rxTdTDqj1#DN}GVetpL*i5QLyt`wqJQtR3UbF z{?`0$4G(pBh(Gs?@Eo0Ye0DE*+Lgu}iSFZ;su=Ey^II32e|ZBoIIMz9=iekpIbj*vc5Vj?WwLv&)H`UeC&6gOnbA50j693>vxUKkZPT1bn%& z2*RivFjxHWI_hc?I0Gz!&0p0{ZcI2HXlYlAt*O3;!zv!1>vyG*`<%<+sivK5H&}c0 zo@ae%63!MZa~O9GxTy3L2;9_Pn8`nm^bvv^g;WB)A>Sh2c9N1Wf-8&km?lWN;H>ND z<9B;Flms^ZV7&S58+0XMAy|p0!}x{#N+XBp&^oVAPC^a$m>lTA)&k+mS_1APSvZCgk(36<&?Zy_)- z$G3DSsh0$ASRi?1{1#9s&TN1&)GW5Hhc05lrl3=*-|~KU927m=1R138#}V5 ziDRXKM#agQW8ao_xi#`|oQ{aPors%STd_8N(*WH~)#b{u{^s<+;0$bFkifcZ0T(c6 zVxq(_k66(Kwhp;)Q)n!D%ioxCB+P3Cm+>Yhh1`qGoR!^9o?5jh+-lUIt{EKomRi0b4YxY{)2ylS?bh`)2KfRRD#Zq zVgB42u#qN#-rs1Aj8=|MLj`>WEO|<(7ZwQlR5JonTKg;OR<|x}ZDu$ffkJ3K8;v{( z7PDgtWgxU4$4d1$_@kUPL@AgBLvDgM>Uq#pm-mjc#QOn|PH84x$eU1-=WW}8>!I(6 zT`87gEM`vBb>fmY738V1vBkyV7*Q^~5}`q!ohoKtF%FO>I6o$pTdp4*PyEpssRp)r ziVZV?r);F)QuOWaZ%;&$@l(#Vb=!kVb=7W-vb;~m;ofkX`)nw!z+4HZSewpEpaGZ+$xq7}>_lR&qPM)4tcc7mybVwlG z@83f$o9Z(Ix+3ayEjPlhaJUG}jS0o?!Eu@`sR=@>4h_>*lZJ-+Qx4%|QKmugQyOze2+3HM3z4pR z5897%>t{T@zfm~t>-loHLWJ7UKLeU>7OO3${jTU|QX`6pG9q3-p1@_v z+#7mPX`HSE)ET0tw#tStvMx71Z#|_cW#4~u7&t)$x2>dO)y6r0dj9tTY#&>cIuX~@ z+xWXz;I3+_yxa#i4N1v{x%Lf6bGKj1-zn&d=@FQ zPQ1l^`d;?I_skds3SwdB^u5xJm=RSnj7H`p7H2@v$X}qX3t08rP6ij5yrfZy8o`>i z5CRGV!f3<{3VZN_$$P&a?-q8c_nSw zye3dxn#~QBHc`3E{QEGLB7IM!H2==ZpSjPi&VEc*vAc-d#-Kw9b6yyKLRl0?!ADH- zz1XCFfeB?KYgOpiM?u*JmP+CTSb1#)1S;j5`dke{2t3B|ZqK?8;YsShJ92k?#pdyY zr(60p=?KL!aKsR?`ZY>znu=m_8L6XGcAaC{lg)qJbf}3llcdM&hECdf$dx)1DYQK) z1_)eb%oT|LEX`ov%DBQ2M8InSD<1>LX+>4~ZK58Oo>+3pxP-eGZ>2(p0kr!C4a|dU zby!`p6&N#0c3@LB#p8myES0stflBF(X!0xebf(% z6)0nLs7v|;&`@?+7{Mfuw__QRY>I}aRBLA0x}|C?3! zoCeM|rTT=_FYFrj*KQJR#JG%%Yr69-hkKZNe|tX3Q(=shlZlJ_;(4!yky>9y{s)$# zP)B@8n_*BMyHRLeDWkdg&%s2@izlM6*R@|C$sxbKVT~kjhr1c~h^c?n=hdb_6OMXO zq!5^AGdHOxMiM`cE3*Lpsp3FSB`YS!e0p3ws9UYY{RN50WUc3?_&j3v2;Z}BFIlff zlq34b&o=>lxmN>`VOq1vENe9uChPH`Xp%~bQ;hO^9u@jba?oz$zQf=txk(7cvcFrEu`lyN?s(2_Qok$X zQPnm4aR|k}Rc(%CTHUv{x`E;>xOxc1)id91ATUhEM5{T#J~*W*Au=EmF5L7caau&} zm)4sjd%BDCk!6oLdNh+mt!{2R`4+KRQO3}IvcAnmOD~uP`R0}(m1S( zpXczyu!!v{)C;99W`qI5kga50+9xq}qtf*oi(SdK-(_XTfsTQ<0?FvfHff?phzk$2 z3jLLLo0XG{Ws?}xY)0Z~y*8RBTXW$7K`)4J$J5HYEQo zl7oxt1G82sbtfV-ClYp*YCg|X>eMOTIeZW2s~U1VC~0{Xo1bjzXKuIBo!ctjH)Ut{ z8iUn&=o}9dBT$+ig5xSlaAEu6{Nh{3NZpA~YA69sk{m4gWub?G(;u7Xv40YZzq4!` z(6Zh2%UD*V#+WlJJ7Z~sq>g04~Pg? zVVU~mvhVQ@r~e4GU|aURDob$~Q%fDvv-JIx;bz-(U8x}-YCbxG*!@}X%F%dCg$%v> zsrzV@!U%u0#cZ2FeUm+7uU0DuJ%QO?-8|CLU<~*!x~sI^KeqhT5IM4)oEjycPdfXU z++VQ!Q|lXMIEHz=%Xy)MTasHFR#$e5m6A)b#xkB;Sn5a%4lfe~2Yf9|M>;ngwa+KR zOp01t_ASpZ#5zWX77Ip+)-nV+$Lp;gy!bsfde?7YLP3vMyG1C})rTbbVb6I`KuNz$->FV|i${Ge62*t0?DkRTn5H?% zKY7xa4d-ov%%Yd+ZiGR3$6oZn2;w47U%b=L#h?*wprLypj zG}zuVf_jnS{g!bm8<$#Fn+W;Ch%xhPN0?2{I)-dm6CyQM+R{xLC}-qeH_W( zUnM<|*a&*cBlh}d$zi8UPH}?Y$>3qiWUK1U!7}9tmsAF4zj#L?X>=Th@!KycaU;pr zLW5-gBkHWfqUyf4FQE)l11Lz(&`5`Lcej!vr8EdgHw-ce2q>M>BGL%bf=D;gN_Th1 zyXX5n&+q+{i;I|Z_St9cdwuSEc}dX!IZ7ZKng)Vc$I6wp3iJ-M9#9FLcxu1io#6_j z_O_Ml0DW4 z`$vj89u!{cQZ*H*CMp~iUy zxawXzLUUy#%l~!*@GoKGNE9nXQi9O$W6qJD+cO@Yyk71@U7H!9x`MkaX^h87uUZAM zRdLsj%#~r#wG^;`+u~3=3HaF`h@Ye~3i$z7cAnmg>1OMjr3y^V70nWhaqArtTk)>B zZ-&&oh4F;_`r}IQ+dt;Cy7xu}df*P=PoF6NdGyEwwpi^_Emv;LdkhoG7m`k^zi)dy zS>1*2rHLNYk3Jwd@a^9}B-t_7W0o^4LgO26;_0C1y%9Pva_e(*$k)gBvEWHUD!jN+ zI`g+xof7D+7JaOgw^9IGR^dNxBWSbfhCdW!?ZGCol1Zf9<-xsj;a^Dex{<&H7(1*Or(N+&vgTxx&{0 zUuP{ma-KEN3<41kI7IIPkx^av^p9(0ClREIB*SiWphG^xnLUVE6^8%cbHi!xChGFL zW_>vTS1s|+)$W_+ZJMROUg{FoEme~#ysLW|O4#2$8y`>?%N5Ud_cfL|;R(yCO1Y!r z2r2LB&V^lol;RkC!MVUHV3Es>e`d&n3jM3y0xtXs-3^K9mW+U#bDQLs31mJf$E8ge zm3t?)^1!}GF74UcG)KEiGNYy>eHTLR> zh31TCkhN#tKlI?AhYPxP6@#<v5--VXx1tCBu6Av1oi_W&&=nkHAaf{V^0}y{%-zf?FQ;324;sHu)Gj)-E4# zNP;Wv)sOKhZ8x0ecMiyOV2R*F*)>vt|J=p#Zv7I}*f4lA^cgOtAeT=wAC`kMW<5YU zRw(ZWN%}}PWTe)4?9QlJp$D~_VlfT;1e%xSmNUo^t5&Jl{cq_^o2`{;txq=l#X5TL z1C*r>rgIRUC z+Z^Ct08iO_?6sbkIBZjpp5Q@O{<6X$h#|E~CA`=xoF0e0N>li1@26`rh&N+l3aAB& z|1j{Vr_8p`07QBn6y$wMjDDQls$z=yEVa28(DA$k!^gWEziXUk|L7U@5oywA#QBb# zv_*hizzNwj3i~pt5{3Giv+f95vphTF(y#tR?o}2IMAk%(6CWmW)ck5#)m>r2gmDPp zvO;He5cg;EUTCGW{-$g(-D4*C7kxG~mBmVG!lr{mxi#{;{CevC6wBwCgh5$G2cXT^ zS%|rBtw;T_n|`z{ZE3ur$LR#i5W!(9lguda7J=^HGw1ZOg4iH4o4)6}pixxv9K0=y z&dmeu2_q9G`!DR*dyS%xGkp)bCYExmonM6kAp~|?Pu=^x(RnRGJXt2DUe=&qi^a;< zy%%0`yf#EPfVRtGVFWnL5peTUOQlRle{#T#l`{LV1ilShNoU;{d(MZR&w|Bnc~kZN ztJvmj66IFDm>-BXWN?u<`pA6#i}c0P@ynau9N@XIpOh+M(4TELyD8RL%O(4sp+4?M!R?#nfME$F~gA~9x6Q?QzCt$GBtcp zYxd;#rzx>ogQhVY;sf0e{I4&l#*a?*kslQ-4T;?YdkJZv&h+_2r?UY8JCQV3n4xGG z_bd;pLEEMP#3?Wm3u0>e%=FV`)Xe((Oo6}#o=Lxr!h#BG*wVept+8Swj*vFmHZY^Z zy|S&x6BKz_s^T#wmXu1P8Fi@WyQ5y-fu-FT9n4^;^XXrYRn1(GqbEEbvWH4OT?Yzm z&+?Vg^UiE%VyPo+LV90lVr0A(esFQWxA}c^TQ&lTtJl?u;dGRrL3D71%q+?#WN$~W zFSN}ZcIQGjY`+1h$OdoB4h>JZnJ{Up{f~wecvC=v(c@%wxz50>#*YNurj5p8>URLb9_Y{b9`>=dmKEO^(5!S`rAB~W z0s{`2?0o?;v`%j$Fy<`Puo!O}MdlcUSB=FuESBN-2>u2O_V@dPml?(ISz@x@7SQzh zh)R#}-8o;)99Xm<4#wP%5bKRS)-D>bew4yPVDgG{d5EjBY9 z4-tU}sy3KYZoB>9_fGbM`etahsI*D=`f62zrnL48mR%(C*#EC^ez$`%Y&a~_|KrWg zPT5gGVpFHcaqqBI_mPA|hIsM!r8k8h(JaFcK8CU0pNsI1*4w=Aa94}R^SP@Qvp?1% z!x6-|nMBz5LIVQ@Wb&VM0PtrNk`5k1d4?q37u6QA{F1!*njbYw-evXSg;|BGOMG z^Won=-L|VDxcF%?ou!)#16HbuFxeK+cJan3iu?(q$>o*>PXHtheu6ZwxO(dGc!zqs z)ETWj_*`x_pk(UJ#{M-Nbp=@G$E7NR9(MPJM2~;#xM~}qV``AQ!Ll!Ur-MEiT=Zth zen^m{gfo9Oa)ePo2LiS+$1`tukw zvLAs@suLsObiyL~t$_ha;oqi{9VcTbC5W{f0_c2x@KJ1&8xFJyF-Ft$lygw=H!ifA zgYL_zHuMelRuNn(XGmjW90XGH+nuh5O;QgeJ4e011GZYT$R2w79siv1O0yH;`e=N> z|D;k>9W$L&HHZf_ndsyhTooJ503g+so-ORNPh@Fwn;>^aCF`)sL=m1Np7joF_Fp7K z`5_#pUs3LPd>Z%(H2NFFf9Z~)iPIjMY{?sXdk8COo)6}Z2cDJvdeC2fm(U#?}Uc&oz84_dWSN0I?r?(qa z0wOgQ?xvDEINmL8RKMYXy)t4(J=yVxX#FeNHn9=%-AbQFH#P$?&-iD7d(n(;L|b3& zPBWJBR@nYI&479^lBS7_Tljjrk8`B7)RXD&`B_2XZo^1^MD)4T)Ly`=?kusOk|@;m z*38A5lwJCwHFHMH7{{8y+PO>ZvlWXkem0jDo7nkdBm^rcCVd|*I0}=P(KhIgEZ1Hk z?og1RIUB@lKN4QI_jzvl)2yO!R*q0~9Qyb{8=-B><}yg6Rzt<(^t1m2nRF3lXfu!K z`ZmU}HmE8bDcf`W{9X=tV|#mD?`?r}f&%ceO!~u7`am{4F@oo1S{puXQaLd{5*rh_ zAf}6#oB3%EB%$*AtWr9+5l$Y;Kf*H$7W4Zua8+S(KCS;lxJ-TNgqij|Pd5>#VU9jI z*0gT)Ps-#Mi-Y(+#N?j-6Xcg?i_ru1lIvLY(4dKQy?5V!jDc*0%)b-H&u`RVMO&_P zaIzIGWTf|VmEZ8lLOqG2M6up-f9BN@ee#E-ed$nI`0MJU>X{`PZ_wIHRsQen0M2;k zXL>oqthbL+O6pH@jyh>1R9yW6zErhqyi)Apyvbau7&+Y_fr}BN2^*_QUBsy5RzV)b zGuLWDrGwF=?q2m7nSyBRfqBv!`FEj=o<`Bu)tHu3T6k@bhDK|=naAO$$C{nO(h+xv zpF!^TJ=eh=r|X3H@4LSS^^EW&Z#Iudko!9%#>LK*@_f4xa8Gc6+R2&_8=T<%mDJ$ee9r zQv+d$=bu-z_)91=VKUu4y5X^G_;tsEWrV2L;n+B(gC}ug@RSGt^Nj}`SHi~etCD}D z4AeE*-0#PFkvH4SC3wC6t3^nody7{i{+Ygc-O)!mpFE-FTN+1-B*8%djUF)a1r>xE zQ@2`qX2U+stf?Tw5je##2 zOw@AmCQMu1P4ajyP(ylNl~6mCt(;z~eV%*_S-x>-t7RM{RQccYP1~ z01Ib>2(PfOd^nvbJHk$p`7!qAJ(6tXUJ|Mxs$kXnI{23M%>(X0&mhQjVfzj*gD94l z1HN3KlxVEM#}VWm3_1Gp#R%U=?inm_u8YStiVUcTlQb2Kc?NX|MIouJ&Zk>ci*Tm# zSHG~dnQ>0@ffwwm_*nQeVxM;EpcX1Oq4PbQzF~@0gt5G|HbyXhHHN=0=&m0ySS_`c z%i?B9t!OM5E?VL&gfCSQ)z;yYS%}O~ZkT$Ylb3&$tT1x5*a^RLQOMaE@;EE)oG3Uu zvI0SV4JP5pbiUt&P_)Af%Y5nD;T}ktgBR{h8;>ZaC!d7*k%#_a-qM`3!nWLGz;t}j z5c*Z_kcqOZrTT(3ENU;?WtIg#EnuKY|+hcDB~IxbN1oV)0m$QU+si zo1+eK(!uQSu$gB*sN6GJkCzsV71Rw@o9(ii$7_79h-6`pRdBE+u=!(^={Kw{vK{Ba zV-qL%a9(KJ(Mc*}ijJEtawi1Lzog_ycY?7nz)OcKBDkaI{cak6A z>(Rq<3Uwl*R&yt-V2$kHBgsriZ^aN3WxrG`jz zBS^@cmN{4zOPA6_HI*kq#ECIH3p_6gN_3(%;Cu~26OxUhgmG?oAMEVoz0_@k&=s~! zDcYzE7@zIQ!qC?e(}NM1li~LY86WTco_`5rVVfo^b&r~C_8NmKAcZ?C?It6UEtT>T zeIa#6L!J<6dp}SjEyd7H%U7c9-aQ$?Y7IPSdjL1OkdiH{k96rzwrJJwTF+K@b?_7F zc*Vd{>|)=sb5Q{Vgr$S_pG_BC98>i7)}x!fFrHw|@VKkcN$RKVzF+v8>mQ7t zr9sATZsksYbH|C!?b+M5I4`T=urA9hQhSe0`ahwYy|3lnJ;w%1+uGb$Ex!XAPstPEvTa#VA1b=?2{b!6cBa13KeS=8=bHlx+`8c);)k{UT9A zVY)vrsCh79*%;2q*KQ#9F&Biv3i%{et=tr2!o&3+nJcf#|DUQx6%k9#pvWA z3Px4%d3JX4?Na_7A;LLUtn7b~Dp>Wf?p@NbqnY@Ds;8Yl=&D)~;F&AiDL%FP5fVfi zlt%asUq~7$7P_Sd*}ItQ(<};TaP*8#DwEtayZQTiOTVW{@wzSHGRV`skC-dd|6<*D zVj-#KJ^>?k%<^R6OM(pjwznUUg3!-*XSB*Ib^g`s0``6-(v3*WP-NU34F|YyB!8K< zw5iPOPaAt)t^r|jh%7k}sroCbv&0yy(Pp#)#udR<2~bsPs&Wlg0~%>Ho$t@oDMNkt z$(JK2A>>z@yo*v57HVim+V3i!b6Yf@E{vZc9Y*{8m`(-Q<}S9dO~89ujR>S;As#Ee z0shgg29hr=`7R+)GS3N7aKb&`Ex|?q&{hs8PJ^Zwp{r1~Q&7sK9m;91-dtZ=Ic3{= z3Sy&aS0mV;(t?SnU#;$6CcnsB`7*;>)F`I&-{bC|n#X5*RI`3M5RkERd0o)OIrCf~ zLyVov>Xf^Agf^pqHG3rN{B@6%X2W$t2%1!^N4A*hrw>JADtlj^hszOu#FqQ8bSE}5 z`1zNt7cMW$&JjdD8$no@PFVAX$npl7bUYB8@bNgmdDK+LPE#?`8M4oEu2uIK>HvQv z8(op#8q<`h=!6sO?FORis z-9-sO`<1$iO?jwy?k`g6LyyYIK zCfF^df3k)Dp9p*MQvst{DZtB5(R(KzZu8zCUm2%YNX^i+WXEQOtnNf*Qj)YYd3bc* zK|-79+?H;RY#(r#d05n*rfCPRd!HrmgckjtvaO}|q=r2|o$+xx>Bq)Ie@^@oi`&b= zo^{3~!}mX}cx8V|A}oK^PxghjUDXeX<5j=<`b^jGx#A-v{K>siT^91l1Z^l zfCpwT-u%w-_zMlNy6nZT`aW73!}#7ay{mOxYJybJ{ISajlYKZHfis>Gv!^?`ST#5W7l`@X-Yu<&iZOgHqpgzKeNu z1ZXBVM*q7m$h`$YFx>QzzXT=gOrhRn24?cDn1NxPfVYdQ@mUUT20ek7+2tUJvjCj; zL|3DjU#4QfSHa9&FLiWQCwUd9d0F@4qFgY&=KH$prSwePT~cGNX|q^45*y)Zo~0(# zS#ub5Y~%x?fIvEx1Z)e8U2+!QD*HLikZ3&ohF=q}b+(HsGY#dTbtW2Yze^2*Gy!rf z>`*l%e?G%9EtbfYIyMK?BxNvi$w7DlN#{a4`vVbF`*AJ#NALFFp@R0jyylJ7$nd;S zVS0BCNw-HvaocJ__fzU`(B*7O*;-~SEsk!fxCocQ$?o$rm$T1D2dOXeE&4ANE;dq! z)(d+2VxAdz*WEtWi|Y2y{&Q>Q+cUp&W-Zm|GP=i8HnuyrkwbX>iSUhLe;jbmNkq`5 zIyHG2T0}iLnC=Jji5Y6>$ksr8@^Q9xYU3El8eL93r$DQy0tDB~fjE?y>SK?ZK~ejn zi4^}QoyGZbq6W&3ug*0^d0z>*)*X1T9US$@9lDc04cs^`;q9ZC<2PVz@5|i>i_d|^ zoYG{2OMG&u&9yFf*+=!D%QqOO1}}xUZi(%L+zU_Mm?v)B zj?00YlU|sHhx;Y79I^7@su9*LC-f-OWf)V}NB9!&Db)$Z@>Ic}dK$mf4Db2Fqju0= z9C((>qQ?7cj?b-z(5Bn*_O!l%HPS*lE)~e_U`}rOq4elP_LM7 z^PR9w5H!AfEzjxD9P*M{f41ELMaLgL(C;V!6PY+_76YuSzs36!3en$(ePJA&4!|Ik zUYrj}Vx_B+tM5KuA1NsOw%Z!r2rdtAI>5k_J>x8XJ=E*<`@WoD0h`D&;yGro<+FDzov>g#(bfcryr{;;_LvM*>N90G;Rh($w2G1J6w$p; zl<>}z8pVd1j%8sJ_L6TujtP`b*0IF3RXS5ZH-xubJ2Q12JR`l?4;GfPngG(858`zN zd@%O)lfXN(GTqmzWTNNxK`$x?G$!E9nG|iuPo5sOkE?`)><54*q<{4vi^eiKe~& zjOC{-z==aYi)UdH6`^US1{np`>r|H)k)uK{OF^7L75Hl9xWn;49k#q>!JbOcN|BAb zA%BtyKC-=@14XLWxWXbY{$_l--+=sBwnG9qqgneyyif_GhSpi3!@#VNTvIFmHWMs( zQFj4aiunEd^=s2g|6(T-!!dEALxgs90`n_sR8Pv@NTlI=CNu$L7KjZzx!eUk%Ja9S zZ}$l85Psimo*OBMV}I;7qAB?%Z_h++u6!9%EJ}f$a8VCL>s6naZE`}LI0<0nI!Lj> z&k$*U#x8tlU*ykN8z4$htTMo{nOo};k95((&o+(=Vb-fpv+_H>UA%5OGRh+Q--fW6 zjYMno zIqjcK#YK-5_%-L2A{0Wcc0HlXUnQD z*@qU-N2nm+U;(1SDo8(vOyGf{tqGERZ&LUTcqCjFFy(_+%w8J?$!5GyxA?vC8;HB8@L5s~^lXzC4oktI+9p zp^*-GsilgHKRPRx#%3iDwJ7nQRXzACqlce!+8%8FBo_zsbPgJ~XII9>cIJyYS4RAF zt|LcgLBKYnPa0IOxW^ldfY-ICsXJ#(*g{}7S?2Zb6TOn5i|juEbYOS-zZErJzRZ|u z{)NwT!g76`G%PO~D@s)?KUwrR-DB!#k>Y|V z=&AUCt8QB@)>-;pIcn5pEpCN4$6#|_qKPo^Imnk_{^+rk^jQbbeUaM*7?xh`Cj2Cj z5RLAdfaqdoF2qa44KmHsg4so-E|Wwq43x^V*d|PAuciBY%y1ESu7UOy02PsW;i(7< z*?MYkTTYUCaP=AMP!*H53huNL7E=X`F3YtmgtDKq?{83WBlM!U0m4$#FjVu(R{^1g zr9tE>%f=Nj1&8g?R^b1YT+tSyz9VOEgAKYQ^Wo-KZBaxszvS)B8dg-qiKsE#a9wl! z%AP^+MPL1|gAAfPms0Bt&DgmZPlJ5k)<_akh+4iIT)O!ZcJQ{Bk_H6Z3n|173dp9# zETkE;U68LmN+PfuJ{+9-mJ#Yqc+s2a)8~qSO$?RcV`u$a9TF42#iNOzxt=QmJ(GI{ zSeZ9$YO{9lsuqYEN6c}a+@Ny}HtmU2F}$B8L+NqZQ4h2~+IoEy+*RYRD4~qTlayBJ ze~7919fPO~D0iiC@}Jmcja{Y>c9mhGm_#PHn0M#tf2C&eM7B&o{llF@zj#upD((SY zVCD@@<-D7@RyjcsI@+RxHs1b=PEi6dv$EQ&ZSOH$7HWpnl!ea_K^n^N`Hx6uQ@t#T z#$ROLLz7>_YYA5fjUf&owuVa5qFImlN~tW8YX8)EtJqShAaSIWi7nOO+7LdjV5Zn9 zF@PT?4sj}{_I#($3qn>kDwCulC{=b*nwqJ}ug2m;j!}r-jC$v~-AWd;1N*BdD)y7~cs{It@vUko)r88-YAPjO*ASA31?Q!a#`LM;UwA-?5q&@ z2DU5Tk_i1Eq<{jgQE*LZr%hu`SsPkw=q~G}E?zdy?tL#YD4hDvw?EN_IDRtzI8d(K zI*3|4>=kU&U7eN->QCto1~lETKYY){kpV5F8YdO6}4U-aGb2FNg2C*+|M;7zCO73!g@?-HI26#KkPN+WLP5m-9ca9@^@*9 zF*?E`?WIcmqj;G4d&vN=I6hlCzp)pay;t#1O4Uw^9_ZUj1t7cuP}7@uIdIGMHJR2w zg~{%1=ZbZo82P^);LlOh)YtT47h9kBE>8>8!*+QzQnG5Q@b-hbxg6JCbKfOfdJ5yj z8Gh05=)Up}mSyX-J|>|j&0h7~_FP}x9d^QZ~kOfIFF zW5zbbNk4~?qDMoQcR+geR-tC8Z;oau#!=qYa}`PH?}TqmNTn_5%il~Shbfw|K1Ww3 zq(RbsyU-gTK{mUyhH_cBJrIc(7v31v!E1#`wWs0ydVI|YQNpFK3e$^eA|isYO`%hB z%TdxU?AgN0;)E&N=-~oQGRD|MZOPsiRx~fWPe;+^rII6p7oKF>FQ>erBK&o_!NIk& zA-oZEw%9btbgESN!kUy&2|szI4Zf}W(Z#~y&3p81jFTGtZmkSAUg2I7(i|FnFEoY?8lu*f;#5Cz`NvJ^ z1x-t6xg2y^W?m`_clW)r3o=GHri<3T>cNy|V5BGS3uFL;A?@Q%-0XLq-6}y1bQKVO zPRtBGQ&k4syZZw8=LATxzU2yQl|6r`VfMg5z=VN35<95%y@)JH_T8bd&oBWDC%i@Y z9caLn8Xq@x#shm}$w-3-yhg)^LPK!kW zf9d}N{(uYPb|ys_`iN8&Wb1KYn~AitI|3f1AtcI|>;vZo<~)_61v~(gRK$2smPMpo zG5;|q_W0S#Oee-dM3S|Rn6z^@J|}ySVBnuM-d2uS7DC0&SdCiI$3bU3%fY(S?c+(% zb@?gs7f`;c0mlY`D)ucoiBN@o2yNgVKCQ`vX_YqyM2$qLNOaJg-Vtt16oM&2F(;z; z@=T}&H;zcCl4(e}L%+8)t)%HQtm0k@A8BL|w<3JGs-;d=W_Hwp(cPe5Xs9{hHjPtW z9ZE|H?>UQ7p&E;95ZN;4V2B>I3ODaDer(4P^_-fxHN1@O+L>90B_Fy9kr;b0-zpWS zS+hGaEQpkl{vD~+cp<<6+Qi+I`nMa$g;cZq?JOC_7v?=qLgw!Vb#P?a%os3fj-ind z-XKZBum4`%I$CkEBQ@{yzO4V@KL1nMm!~RoGuftCkJtZJo81IeW8DN7xw*edN($bJ z#~7*_d55Tg>;boT{A_E6+n9mDqe-XcYaVVkr%7yhXF2=3fXZ{Huia1JMM=-ul2AtFPhM;qgOX+lk6!b#MBU|*gZEd;NIc3wTdFc5k#FNwS8 zW+r|-psv(LG%rTvV#uT@K5c{}?E!g=z^S$IeNi3no_>g$&6q(quRfN*Zgo6h#zfKO z997u643Y*C#Y}#~yGm;<2<%W^-9C#~v*sSzA7mRueNYY42G-#~G>nSV_f)=11+gOv z$aw$h@~~56c|z?|z2!gEm|dQIcUx9}U=Z}4-VcgAQ`BcW*Yhlb8oomo;2mm-F(IhB zqN08|%C@m6X=0$Er+$0*&n7(>|6|B|=`)y&rGcj!Eg`~;;x*Sh|E_dpwtAzd)0iwQ za;H`!3bXM5FWrf7l2wXRV;-{ zlAx7abt+qYQJFk=M%CgF9`hwLMw6)QAjY{^;2aV%(CxoTGw{$H$HllG`*hH1b#%Q> zJ9-z?Gn8dE)t26lg%nxH!vN zZ(oNjUFs4L^{HP3y{=3YR(|xZX0UrLhf4ISco+Xf+eDn$?R&r1HG8Yddd_B~Q4%)y z*C!^A>@_cRrLC%pG8X(S8=6)LwcGet5u-_1n*|de(v_)JrafN1Pfb-> zkN-GKEz3KM#4a}yty|yo+NC-WW~&)jZIIltMG;9-y_@sK6X?*?;GnlwespqVxs_4dxH@ z;~hYPO5WDS%Z)7v9sD3K_TY|L9BCWew=H`u()^*hgX7Zv=O_NuObsUVk?FcEA#bCW zvI?BjbIqifWc3r-m-qO}zxSw4i13CG}@;X`H+ z!RgQG>55020d^>XqmNlQ7AWxU3f`&_^TS!qerm?l!%PAZY`EAAlttH_4@zW?&uHb@ zFXKWa2dAD8K_XcZ-rs6olm7Euah2>*?-rFR6#S3SUCHA_L2v_EV)c%qMk#LXEHaAg zt$QN6DWU!E@w<|NI$ej~3c9xcsp`VKS6f#XK&4J#Na@f2Y{4l%LmTYjbJw`zBp zcp4N=kUqovFVFtZeX4G+2aK+x*V*EmmcY|t_sxM6eiMrozFEq@sZDs8!uR0$zk|{> z9GlKp-t-Ht@&WF4W@$R*6huLGJN?2~B$&R`#_>{)Pq+S0*$?`W8$oJ9@xlK#aiG$w zo3UshEn#Dt*Ds)*Wkgr!-Z#8AY{HhmoD~x3k3kJ)Cw!P$2D3cR@Yzv9brkA=t9=B8 zn?2ul7%_x#Go7Y@G=hLF=PriC+*HRpmin5a0t6`^me*4t7A72lUGIr(Zzu~?@$uy_ zrM=E2P$QQcVAT!Vwq;@*BB{~+=+n0|VCu4vKxBFrqg!V*oj}Yb<9`rLlI~s~a%lZp zqe=br=4Rw*!|11WO&60&1jlc>>j9pTf^{D^6&+RTb1ihLXnaB)2+jD506!9nKut3b zinePoWJeW%T{J$-Oj@jP86op76wLWv^q`Zij@k8iRPTRU^0-|X<-RI=P@oHtDy_6S zI3D%|3GxD*s^H->eYite%RMzKCP!Q{9(o*7)F|$ez-2!7A0he7O<)|>B~574cw(gEoz@E0VG+GK^2bklYL^eY}8;2N0l}~+IIr7WRu>>C%_dL$~n|lhv zQvqM9Gu!0nO53X(x9Qa@s4VtP)4+qS?WtIIqTS<7PPcgX>*oemFO5dWAO3#4IQz+- zW!Ja1>BsEo_|viHO`MtbYn2STV@4Y#Uu(#}b&KfDIr$ZdVvVkTo8Q&eD=et3mJ&J^ z?EdzPWc2vy_){-6Ky5}gZ^mnR2q`CbZ?cxM&$1Y4p8L7gN{)wK+Jj#Fqk4-J3!vGm z0&j#ws&b?V@8oM zYl|F^xD{1ksk(~_q`$o=-tq)DF|~(eab=1EPnjGxB8o zz=T)@aD&{tB>FI7r}6UCn%^aEe?b;TX3wK&fzfKKR~XdNdA*=WN<_heM__f zIyH`ehr#6WSaFbbUInI#tsLGRyI)G5A-^%!3|t?~Kpyh*nqCq2yU2~=pJGNKfHojw z+qQ0_xusqy;1B7AV_JVP(DrSBU7*KrL1lLD@Cvzes*DpcqhbIwj(Tw2KZfj+v)=V6m2_;UNVBGzv#&2K< zO4Uk_zh^(lk9t$V4Eogmf5EXgxJc$qJnCe}hTETfZ_Yk9s0<7PhsLXv8wn$7kDyH3 zp#8wvl`}{`Z_|%}tNh|NV8BllGESWC3tJ0D&>}kNoh`o<=653~m6!x!F>UvAtA<7L zppL@-V0r{V+!bR1I#cRH8V2pW~ki>C)rqEa+&>ib=lZBBPmS7n)dDeWm0hZ^H|6>d*AGc%Ux?p3Af-QTNh)FY!hfAQufNaknS_vI)`#4!bzu|~tqgPr#pJV878AZar2Qws%R z&(xuuX+BIbD|5?6b*z=bsUfz}G9}~!TiCvBMpO|J&?agA)_))Qx&-NLFM}99gnoaL~WoHW>7MSUiIi^PJI?Qe$p)9y-( zr|FUE`I*q!%jLeN-d~A_TXvkUT;z+RV_d?PJDY?dgd6;v7igl&P&Y(lp3r_{?TC0* zDu&>@P1OK z58kj`s6&;?8w&~(5%F)unF#vU6z^{~#ZV4UY(j6(`-FYHXr&K=Bg+Yi!%Z68BcuDg zq(@Wf%pW*cAS}*Otv()X5Ld7GW7x^lQ0x-I4B|&}#A{n?d-37)bY6<~UKS?UtFbDr zm=*6V(P`~#k}LWu&KTXOK#pnhr^mAp+gNP`T4AYx8Ip0}-ZIqjqY(~LtQ5mI76aXB(OG0PuO+*YK9^p z_dE2rGVF^e20~^pZjQS(CyU|tfqP&ACc*eRfq6GZV22bt)WDM&Rw+u?FSr<)CXz!< z=*SBD(S}$3EtHS&*L#Il&u&`TGp~F~(3%!9VEfSjv(*g~mfM^_m$UyL3%AXP#G$OI|`b5YM=R4Y~UMzV_&nkw-(wv_fh4C3;U;Y2I0m}w$5v%j5I zv<|P?o|#eM=*B_sTDd!f>qu}kuaK{KFqBr>MUz`Oyo-*-9)>z&G5Ob zFx@rA9-66te zapf4c^o1uf_X!Mt52;nq){2kq5RO*u#Zaaz^CHIY+8@{(he3^+E|;-UM!ETp%k;S@ zsAOx^?Ya#s)RA~wa!aOIi)O@!x#Do43oAcJJX{-qy@Hr*<{4ZJ!C6rH8H1N(KNMP$i5`&zT!Nj|(w z%uSjC&qZsI^$Zo8XiDe^+Pk+Db4R;D8tP9Q1P!NEhrT=kE=g7Nh&643sVbaEjhTBW z7L7zW#!fc%jyAU6XvwbRb+u~3Dh3*fc{UA_U%JR-<{q++TM6;lxXn=lB1{mo()M7H z9tP``Q)I3N2J+=4DX9u4U{rNv z58z~!A<5rbb2{`@jM`19kpeENf&9H$Pky)}uD4U#F5jBAHnnfhZmDf)2{l1IE*6vn=C;pJP2QjEh?lAm&*_`3%7K-dn^9CdEkbThpFGYK7=g;9HHWdyh>dLL8^F=*+BHSl7{d+yYU)0a=B1~+A&2OnS za`q-D9A`TNCE@`<6_ru|rpjlf6elBu zqP95)=IPp3>2-y=utDL8@Pwv8lRD{wQ`O{0fzbO}wh!`r;qgKH7$R@QFoLi#=ELB* z|NMiW?@A0PMBVUTFMorte-WA07@xT`JCU6XNUa@Cup1zfRyJ*zTYjbYdJw{$hyU4Z zH8a3p7?8rL{e02U;up+LN|kQf$|K2fZwY8JfO3$0gwja1n{RJyz%5ordCWL2!QgBDcx4cH(5#LcPcsEdzIJK= zYHA1r=j#Y+d)~BZbCvoq^-)7yNDPeM5<+A#be?j9c26#F+!w8@9?rd`*PR3Uo{~%$ zzJu_z8<%Bg%o{KOdFgzO&9npPf?_xd_uBh>_xZayA~%>{VSYG=isT zASvO-tdy^VO{ZYpTRk>ENz~-aT}G-m$RygaHGnlL?>681-v|JTgjgdNMeP9q!PVj} z;S3cDhOfImndXJ-^uw8c0H!lD^dW87>l6T(vS;el9I{LC&jA>m6-Ssooa%zsUIa$Rgp3O)d z{&;*$Mt0Si(ihE(DL2#+z#YxS6cC4~*6MVCJ1?v9_QerPJPTe6vR3+F?U6|!eg;bi zqS!jfLR1IYg|-(Uk~O17{Up6+mPm67PthxrNQU;Zf$@Ku9N=}A0#xFPN>TX;GeV!K zjQ(0({$%Yl}(d`9a+&AS-VqA zhP5SeEa-7JduduFaZ(ABGL51%X)kOG^D4?-V$u3>__2;BY)%-HS!kO~L#o|AQI8*Q zO;*|A}r>xLDy4kE$m>WTd-K~`nCFt$y^t;wMzf; zyt?C&2Hp2c0V&f4N+PnN?o|%<AJ)?k+kdHPBf zXMopXL)`639#Taxb>PALzW-y>)id|k8)aH=`WeJBx%%fL~j6YqxeaLv;nQx+f_``6}IQ%s6At1-P7-xI%z( zTDEg1NT3@eA;vrYKce1(EvmQw-c~|}9zwc?6p@tfZUrnFNdW;-Kp46P7^J&P5K!rk zAw;C4yQD+9QTn;Y@BRBfFTmr#J$qlVK5Lx|I7Gc1rdBOL;!;b4r{1#PS-uF^f3XjV zsL|}mf3jgxxLq}-s`wtol_%g!9Afc;V7xxT(vKwx!~`78wmx18<9&6z>pdDM%r12T zA-dS_LWhhWk|;->{E(zWo3%(RagY4KVj|`MrWm$B8S1NTV1b}_%!3+y@Gn&9QG=wd#bx8L&E z@*7+h*U#^hIruKV-ffk>=4S&W#|yNVJ0EN$()jVsyj#QPZ_B=l!8Az%XP@%6Tsl#( z{fhfhBWrWucVJ6j^+J!Y6pK3KK+m&0P3xld$PCCw{TOCezJ2=c6j8*I_(kr_ZvXA% zYB&}?{h#DshN})VUn(_Rgldfx4skj(tZCYQZk8H3ZtB>xdc-sc>G|nt<37hPoe90<^yEG*>C?{D7pMunOEA0R>&5;!7o*zr)^9T;|1`qBS4W(4DBCM zVa#Zfy04V$5uMxC4t6QmluMRP>6mM@;R>I)9b4_qiIP4ak-Xf^^;P9?a2Lx!m*)Y^ z0lgDv`J0Wb^O$~mw^@EqoVz+*`_KE`V-#*=+NDB8blMMl$)QU$NK=lB5g;D0M;N0w#O+REas);6Imo@Sz>tBZ$-bs zQ*>Zr0xH)fS@HS3J3z=Hz4)=`UzB12^^9beCbZdLj{eoorSXVFrve zr#G*b7~~M}B@frpW-+TkFb(D95R?YH%Lvd*6Mw)gggE+1fXTul&BAW_oUcHUd#mq~ zWp-R-UvE(5^hKs>C72AZ@8K2s)*~^DF;R|?k#SG4OkfJXEczeo%7z<_y889!LTki* z;)YA=qLz2~=6WD}V?Sg4F`6H8k}4eg^G*Z9eo4rFV9@jAYx_rg=3sVNp3s`E z!!4k=a2KXlzrV~eC|NiRP`?TF)9(eSI`8LGz}RlVHFh1uhJv{y%N4TLz}I`3?*mx5 z{l2=*cmFgE;#%sqh=4Pw<_i*?B}`I$EXpf3MJU$?Rk=Kp&B3mjH>=2p?0U44vPi6s zuG|1U(_So0Z)Vf7Kp&PZNoqJ--5jk|jq=A6{21k;sbs2b9vu0Ohk>_Dy&w$=$UEOY zP)71YV@7v&n#zyf>eTL&YnMtx6~c3-6+V;Nf7z3inEY}1pk~s1%CnPhjP&WGa*Mm? z@7nT1mydcLWLkfRw5}HVm4;aD54wgD?Ys--?aeZ$M)gK*8H&YlU!-9UB$(UnY&F(X zd}z;YLv6goEx2u`McZ@HFA9z}R}X5ES*}>=Hj~cy+|GZnTfKp6{$;&aUMgTe@Uz`u zA?V5ZDxWWcLLR24&{0Ud-TsCRt8;oxm^i7Xr<>Hq7w$u%>MoY>J@ugX|9&iTFy4sy zH*wos-OH<;zq!v{Asbb73e>14-kz%tk)Dqqo+Zz(XUsc`KnsHbM5QHx{t0^(Hhb52 z*Yc8llps?IQC>7OAp6k%-W>HZp1I;d{AX;%BpbhImi~4O^E+*&jA-H*TyDQ?U(Ji@ zb-WitgkLm*6~CPCg|~nS1}4T%dh_czS$Uh=7EGcC9{c&zB}zf*EGOrozZ-*9AjDW! zUIp_frn4w3$lW$3xF2W;%8ozx#zEl82VB<(n$)norp7NNSxS~Bp?vMm;%|q<>G_Sr zOKrxjNcLV2XWKF|TrD}_fKh|8R=R7m7m9x7%*yq<=s6AZOTZ|B%Kt1U0{ z7mM{&@KxU>WuiMEAIfyUfA&0l!hrn^RGT%$3V)6R_2SES(felGShPo$kKt?w(=flg zS}@^T-fa10I@L+!o}Y79Y(Wa_-}b6``Pck+*T1PIN7jWT`qpCM#9M{Fp9nano*$;=kpu$B*sSe zfzu-rR)|#3J-du7QSEUx1ESpwTc>2d`v z)3)0MT;j6U${}H#$P7Ll#~ZfLB34IaiE~#KqGE1$g4x$+0spD&TEaTLj{Kuk1#TGj zW(Kcp`-uu|d#w7$XPolME^{ogF{Jm}trMV;r&y$y0M#zeD~kIl#@0OWl7?-x!wu_> znEc9UbnmES*Wx#Yw&d4S{x}4N8eL(tWEgak3Mq{$7|E;fE_Z%cjjSh-%!zJLS(AoxZNG>Y*e{Zi56`08j?uU_V^hnHU>CT^+ zZT_`hR%{W9@iKwo!HJ(@8o4>L#sJgNCTI>)FLxUAJd;ckBlBIbbY}_ahsa)H*t(?8iGV(8jZfuSG|QWxh629`#}~!d8ZL7gk)E|KSxl) zi4kq|pu@prCEQG6nLT()U!`%G8B{tTU)g_`2#mmw;i%it75d;7T&-X^qGH0?p^s}O zB9H9Fzul$hz7k)K*COzELe1nWue~|XNl5Xi13g}6`FID8RbOH{hom9W9xICU$@da@ zCj?))?Sbo%o3|@tGRu1sVtlv^No2U3xmk{QM_XgiU>8@xWHF8F%wp5Bv?ZR*)sp5<_XPL0e~m~R_QlkS?>;m}Y2srUgmqt> zY`GbY%v<=sW${{#aAlD_gxVvTr_{OXQB$KhAaweKR zRyU&o^YAXsqBey-thY-ez(p9xD#mpsHpI`B;`<@RCD*qtYu z&!X)D*D>D(LHzvA4R?u7sJ=Fkj4#<*NN#?{KIN1kCwT*KY1juL4u}m^Q-fB8z`wA? zd$Esinfh9$Lrl{l5;>u@;bJg?Wc-uzdiS-VRtZJ=4t4D^(E0dVrtvS4n6Aj7!|e9n zP9v7|+DJ=`8?JFgoaiuJxNdU9_3tFHyKM@J(Jo0M;n$Nf%J-lj_asgiaz19oemb1x z(_K?CH{JRWv3j3h%O0jnKujYnxPHDhl6>4)#Ci43#IU2EXj^e%5nBnmykqvpy#|^K zp_H_ZFRwAS>r1SU#|grTme$8P=Thu3&|#F*mN%Qwk8AUroLHP6Pc%+M(w)EZ)=&B| zM{c-8GE=CV)mQ4NtbgP<+b$%`l3E0=GVVmjoqv&!$L;l(R~dw**Q;h|$Q>z9$9%du zMyf+cTD)8dq~%%-h)=iaV0$MAdRQ{`?Qr_dLR*)`ak8Ka)fhVAOujh)+V zT-#txuU4~iy6I}~{^!5dq=N6Aq3uuQGKA^_EyAo>hUXzoPv*}&^6IVA#81*)KM0;# z7GE?`LR_pCj6}&J^@x48E+St3)!_!(gZbCzD|iR&XEd)!jP^3UEyYSb6o#aKJe zkjPAQ3lhIkN@K`Y;@{9D*6Bw#2$^E{f-i7^VEi4AB@F};o zR+Pc=x$NlMNW!Uh8X@-6;bz~;z?P|BRACEC>E%fR<5kXU@-N4%GsGMvKRJ#EODFJe zMF}a%Rx}@XPBSOoEgziKb8dDk{GK`}d?9N6U|KivQE!yfcnm)YXA$l_m|b)23t6e2 zat$PBUm#rR+3F(e=kh?fZYFJJ2o?o{N;At_(y}7AqdA(!QThL)78talmEwO^!A;)4 z5l=?%g!~O@_wz-sk$fx4jSMs-F_qc%H?C%Y4Hy5ar-f>#o4Ft=M@2q*L)l*zZumI< zp3HVAxoXNRIkJrLN|Fbx!0XttJjaoyQ-x*PvWoBKCE!*ho(6Glfs{CVG=R!tXY|c3 zBzyGtL(N8%yE;*}a>s)fBK{wki8i`el8wp-PnOCRHDPbvsVK|CqYpth4s)30GNxL= z>Ys95X|s}Ix%3gokI(+wK1+i5Z}7DOTj*luJRIR3*JH2^-cn+v)dTIq%y-|NCRGKn}oLN?ht_ ziE?8_WB&1;_vQ0xIMCW($z+HoG&N(DTQYG>YU|b+{XfAr`)Ii-s`)Wc>KBfOT1$aO zov$gA>^6SlrSlOp0E<;d_;>bJzu8C0E&y|Houw?C8>37O6%W1 z`XKz!l!uHN^saKuikiQpD`eLLFIkLXyOpGpUF;NE_5XBncI9xID~EIYedKYEOmKc@ zCVhNd-?e3oiS762)_5?s!B5{V8oBHP24UtOYR6U!6~!i=m=A9X^d&eD71!V4Z(az% zAI=G3n0Co`XBtFv`^3QvZv@@im0xL$Z$Dy?R>Og=)y_vBeWcD-;@qXhCE(8{7nNd% zLOE|9nO-hrF73FXcgXQP{@mjMj_+2J};{6nJgz%4V{90PBr}*28`r#+Q z?!_Lp6Nza|C;6jMzDfhY8eHo{H}c|~sI+gF1_B-g(?5|rLTJ3Jn-1M5U_=qhLnZA6 z7Y8)dO4`R_E7PFZgnk%3vYh`bEUyh0*#^}#8z5HO+oqxs-D!#TPjx@xz<#@dEC^OhIVHdi!RJ>d@WTj$Pi8!DsJ8;u-)Wj`3-(bRhKS$ z4kKlvJ8d}3FxKG0cOYK5wo;BB$ehaRId!v*0C;0+Ez}$M7@fuByMbvkt5zQ!y%-tr zy*@%GCqHczWJybb&vFC!fV%@UG@$ID_{0&6O*S2frdM9%$$TxYF&LQ&rDahL?{ZC~ ztK=S};mwxK{<;KOW;D>W1ayD=7Q=**^P~Pw`Lb|N=6~a)*1roQax90gosv)1(kwQs zW{=D2b}JUs!XKNW%L-Sf z{my%_x?S2zU zE@$)R_=yfMX^3+$`*n65L}}9HJyvslmx{~(G4;t-!Mk|=vpJz{+g-bFf7Y^(buV0P zol5K0fN0-;HL**o@gN5KlR#8Y3y^f&J2|}<8eTN(7Vtltb6gvkt*ksdkfOCq^EO^) z;A=TK538#z-wGefdF*Vm*59;9H&a$zAz3^5jZV+A_)*6f;}F;L$+>`9p zZ#wRFC_x?2$q2jo#2>|K4R+ifiE6Q{3@*QYSHG34>1X_7JKT&Cp2d$>k+;`jB8 zJBo5_CZX>84{`|v0dNe)eH+t#DfLgctAa_FC<(;Wqa*)U+txBaGgO8N6}uuteXK%Z zs(2Ok!0RZ|c!Y!T^9RE__PqU8rUz7vZLUBiwB)7CQBmb(76#KN%Yz^9(SFDhoNsKR zqA$Bzn(v48lJkGsRtz}q$@1SPvy4~Bd+on}@H;nZEwow!$7~hN)cL-%cxr{D4=1q!*iuWAgIc3!T?l3^yLU;j@wtty`+Z4}S2BJVsD-oEZFv0VXb-ui zL1ThBo=!+#(}uNgTj=||7T1XK-D9$ER$2jf>iW+B7!x+(z!3iOS4ZDmhaI>6%W<0% zN&Wfe7BqiZfmkYjC%XlahIWPyw4A);%rC2Nwwal=jeDE(rVSSJGZlpfIQaG{z^3}8 zz?5z39}Z-99&Nf`_w(+%ePLT$wEP-sS|sIcVI04OlpYWA?32nfnKRw~?YY%W!~@H( zA~^FZVrjgyQF)Mh(-WAXp?p|F@f4J9eW7FCkalemo&7#d&v@bgeu0VnziC$TTdM05 zswaPjCN@5|5cCK1Xi@BBj2nK|+Wd7S!z+a8A4=$OCP6Oqz4)ginl?Wh1BQ*w2NX}m zjXD(VV@%sEz`}PE>7Q;0XseZa=5}K_3L(PYN4_~Ms@$a*ibKLm+%b28r-6<6;l>HY zpNgM6Kijh)-$ju~1!LqnpkZ8Qa6hjOtAoEMnebzF%VQjs48 zn?vG7NH3W*l-F?(Bo7u{0E_w66P|T~Ql^PFEmxQ z#gfOt$B)Tq_cep>ilX$gczdB}hyv{l)lqC{x+-3Mw1g6wLWVd&*qAz4y0G{_R8UGhVqA04`m1!55 zZ5N))03kwN1N2U!L;Kq1sqieudW4SREtC7G5LBq+%1)!tR@ODt3u4zU=s0HgIr{u3 z5rXq{A}KaLISFE}26dJaP}5`*K6nLFt$W-uE4gW{GC|X_^}!mF^M$6raoj`jm4z6S40VEUU(=_HKVPu?l5d^Y82XEM%IYN4y)u z{NY(3vOO;JZzaf>SX~^Tn7V8Nf5~~TjhpRaM0~$$0acXi?-#F2vF$pg6pHLunr#S+ zj4?P$bDi|&&;N6wWZPK`QnEa`X_Qv2mArgsU{*e7`?K0w?co5_kO2py*gt6yts8R{ zS3Mc2T@C>>TPW_*tyn`uth#6vISYHw-6s)}%>Lk@u5!wQ&bK_2J4tLF_Ovqci-y8B z>-V63(cX$lNIA(NUJKX?IseBx4A{eFmUBpwO+=#2*&)m}WX!s~Hn(wd2@JpCH zf+9d&=s09@%@ZaqS#H$%J!m3kpW$dt`r%6iql560)ZM=_&^9Cr(ctm1#M6J0)4u%E z#mDM0X?O?8&z^4*UlZ&8OSom*Eo_nGg4znIRHb;wj?1Q=;gL^_{qrn+!`5HAqCgu1 zspxZHdB^FWr1-tx7(=zNBPyVlUFee*M$Y1a6uX@rje!w7%LXh9cGKXHTIq%q`2%2u zm8v!xvX-x7sIf>tbGP;Vl{Hp6=94y|J(<&+z%V!DY%c6<`FgSLctRucti(+)CP5qiA&*U!=@tpuosWN@r7P@xsBQq0q-wYAQX$RaM=8xx!D+>{p zkC@Iobf~4D$+kml6j@=+3GXn55K@ zHR#gA?QctWs&)ZUk8f-5HS`JM7}9ArKm5{H7f)|`m0tdMG3KMRU7^5eQA3M;zeY&y z2QU6UxhW@Zoi6Y1fnDB^^HncHva3+~@$~l^p!860H}G{CS6Z5uFPX0$Zufs{6h>e( zRf-Axz3TbV&zE^Ixlat1aHK{K!~Q(>&W~gK^jRC6)ycuq6r{(5YMXH}A%O_+-&%Bg zTo@Ql*sfrb&?8c$6fb)XM~Xry=2|BX2@3C2A0>CXd4DF+BF z6aHX)RDZT$^=(G>CY6kk zykD&T7A9XpHph8bM^$jHp4E37`-#4Z{P^8>0jlOa-r|T^s=$MI{vE)4(Rb0I9M(v` zf7Ho?z-M@Z(m$S|V*OB@U>NW_cc7!t=g8c1Zxc%Jk+eJvsW;xT&#;Q5yIxCSmFc~{ z*vp#Xx%vf6VHI_`E#t7pjoNxa-c2Sw&d#`w_iOVxFJal?5(wRDVUf`HmfmE15)vQ& zQv7!Zw%DIqAOSrgUMZRG@7~e~dp-N-1^#(is0+`LtZm;hhPj)n-dSU2`Rm`C8i1kCKFS96JmJgVz&4$ zb0ySNw5YcHE7@k^Wno@qv%3Jr$x#Cndv!-5_FDP&9E)Q2Wqd{|(&YSk#8RJ}CCiHq z7P)>=u5Wh1vSuc%E6)=tLxjVtw|$nxP52Z^El5doW$Zt_VPK2BF|g}l=|49@`66{U z$L9?`BE-WukXk!>%VT2tqfcF9NP=_UZ1owPM_##0@9UAI=J9T;c*T&{_I?&4d9p$` z{6-25sCI7xZA=p!OVlx?i6W1(-<6#JU#CI!bzhve*wN6`q7SP)=t%t zMH!z&z>93HY6ZirU&0wuebUaTQHW-0>r9jE-ai`e)B_xhO+vKeE3=!+@m8J|10?t; z!?G;FgtMkU;cc8Y0P&{ZZC=l4_54VYQjGQFixgH04nla9N=}p3|J>ah5(i_R#8$~- ztAbrWQ)p9@C{(5DVYyAh6KXI+15zlE3i}_fP#7~53U!jrbGPjh%bj<(KOpTQ}_~5rTqtjgMj@|9sY|~w<-yXXvOo2OErA_NA>8~)} zAU?VrSztMNdHNW(|16{)$^yYvBx_`$W;Bf7E8@?jiTyr3r8?7rSRwrlA!#R9Gso3N zX{58XO<{Mv5gA`t3}MXdG&6qgndT>eAa`XUN~JxsL&}ZunPkc%XmOETYDLvwxtCdA z>wA9kHjfr#8ilHDzg8q4e#yW+U40Rs5yeU({J4gT;i>;S9RKiSH{eIHx~OPsA5j#k z5lV6`yf2}3vNtcY{=59u{Va$79f^#?sm>fcw!k=H^5{B7`tmrf>dfHb`Y#XQPeX-Z z`u9if5z+|$mMDE*pL6u3uy<;Z6!lI?k!1AsUEFs;Xc8Tnk#?pEUfYLfo+CW0*as)< z47k|qB(J>hFBtn>vRun+BRQ)jsqg#K9X(sP+iDo78+@?ACBOM}sRM(71_gybVw&-* zQa3R`QD#qepENJCF?qGM{7kF`L!Lz49}O&2eU?Q~RR>DD)8nMuX0ZG99G4;{&Mica>@~-!`GZwHRO?CVhBp?`ZiQZj zt4U3>ye(v`=eb&Su-c&{PQkdUei0r4wKka~37-+Nw~FAjBMR>nU;JS{yRFLfkfXy? zbC+>~+OGbw{zTn)OJ8w0$rmqcf_~~+{u<>6Bf2&3s6-^HIvT%G6}jd3S@D1o;BK=G z`hxr?UZ{OHB0NPKFaka9t^V>YaVu*S6PReWrVXi994w-^ZHSMH41JB@xBFi#YND<6 z8_V$g^|h79Vl~V?DN~8!cMQ6rAr(Lw*WVFfVVo?k3ih*N%S$cj3=1!O5_RJSy;uQ) zzi%xD0KRMu@D$a4>6c|1JoqO7{t&_v!8u6aTXk1KBs2#9?OyH@MTRNf{g_6ugbIe! zMG(tt{u^s&Z!NuK^hq%BwzKhY>s?=o^X4tCe3B)&6%Mjk5Em@*rsO5U;@ZW2HK+S7 z3is3v9TcA7Vk%w3X-5NUzsqxNuGaj9z>fxgetJ^kXUU zKH6^k_Xk0r(vUrU?LRSr4xBQ8pbE;NcHP+X*T@cce!ROqC*$+~r0WiTG`u!Yt66OT zB`Au2|EPCPs<`Da{PPSsS#T~eFq8akqD*pH_98pzskleVZ z%}maY2c7CdAFMy1=oeFl&!Cx{%eyHURt3B>`n4R>GY@|peaK#t{?EzG=To+GpyB9~ z;&aosZhH{qkuA^je$ojm*Q=xlaeExc=k@8U5KU-9cJ53FlQh+p4Xo~l zZzOCQ&%+05>S_WL$mEmz5d;}{Soh8Tu-+HmOa4#x^v8`D%6;mwI0ieTx?Jr7(4}9M z$%j|e1s?`8Wlfo7fgUS=$9}^gg$xUq@{TzNfteEUhIz4{^}HbU7Spj0`I*o}S5pA; zw7SlczPXl}Y5m}Mkr+e-Q{$Es?FVP{M6};9|6$*Ey-a|ROm}(GoZJst!~vOH4+cug z>%`U<4xf`p1GIfy3ds96tHw-n zy=Xxv6a1MjV1u@<_=jQ!#^d`TlT~bR!>;vmG@}%(7Udh;2>)i6nzEp?wKU%1vNk+1 zUPbGJTc)|niq)aFJEo^31H>^WgWNvkaus9Or_Vl>xj7rCl-)jaMbnCuuF=I&xbFW= zW?cv`(O&z=PH8nX+DrVVkTFllM?fL9WS#ucJU9@A;_lR>X|bKo``$bVw+F9>E!y)K z&;?wAabzQC3Ga-iF}Um7H$$a4k{f9tdsKu#N-0uYfK|TdGXGf@kz*(*_L8`9z@G!b zdBN&aW7N&{MSYP61wfm6LEk05^f?m*YP!{7K>Fq%bn5n1s%`$PmT#kLmiKA*$^M-M zp(At=)~`S#i-It8J>5$d#!z~>@QF99ZE^o{{xwy=NWLn(qut_%<%rU zpFbt4Yw$L?oEDj3=BRfR8DG5wEq%@zJ*3$y4vWRhJE(UhAjIz;-UIz24E%H`p>i!; zb33^!`4af2-%%@dbAMU90K@Xt>G@k9bf&+N6+LmWsMWUOT^43U+`Bq%Iy9<=Qy%)o>EX~H;u+jDxnURK{u&KHatc8<|0lIVK~lfuyJLY0|q(^~ejjvzJ8 z()kkIU}M(R;yaDZqq{iXPix<+6tjt|qqe0JEK}T)P8KphV{c8IFJxF5Q&FZFHiEf` z$EhM8@ur)WYxOU$BJ3R7OfK}{rP)Uwzyb`)QlP4KLmqES&;NvSWG3%<&fQ0+C!TKH zD0uFz{a2Zm%^!aD(w*k|r0`#I0FAJJH2>9bQ({l>^Bx!kcXNc5Wy)q(=8WvEJtcf(`Fz36ee9>>W`(j|Z?UMD`0X?si; zYg6rqT$=Clb-#$%e#YVaywnQ^L2jY6n_)-PRgjL0CMERS2G}Gui}DiO>Q|Q@JXLmpZE9@&eqi23Fu+ZL-HXhqoMFuxGQOX2CXBFJ+nKfW)qyb<(KeHn*Fb z(#`VL^@CK9mH()N`mhe^@X~#KunpvIp@EqCFT2)a1_AYP1p$64b*36uyvu`*Vh_R< zB%0lzZ0TIW`;Gw_<>XQKm)Yo2xh6zQ>1$X}dNR{x!JF>7B&|jYw_rZ^UXDvwz3S~a z1eb$XT6{;c@Uq9pQQB(S!@Q?EANXA55xHU#Rd?0fY@O%2a*Ebdg-me0PY9}%XEiYI z5On<^;#dFuWSii>!QJ|gG7trtpQlgUz4FDZ6zL&o%2y5J9c4lL7(qVCKa}qOO_ngu zPG8i{&0HGD-g9S#|BSfx45M3l5XlM_Q4ONL#rm>Yr=Q-P7p>KEq%1vX^2LjQXh*C} zX2c~7bhWidt$zbUlOg*68k5_StPpmT0ANqlZa->`yB*4Ay3ag`_JO;hXhu~~vWc~T zWUh%A0MnUt)ug0uw4ZkznA^9h7y2a3!?#I^kn%_h<~|F*3u)eHc|SXUZ@2{X$?<#8 zWjEli2IpehLC`tS1Cx5aF{>f1w0j}c{x~q?b}1PH-t>fT&DwKw0+HFb3N^VRrw}9V z-vteD?)?|0U(wEI{Yxjp+lW?$zXDnRs=!!1j(^8EFW6*-;K{Wcn9G2>n>m4EJlnIfbmYj7?tPx z>;1%bMyrXv>6N}`N9WOZgZm#Lx4R?{%*`+rsSePYoyyKzPDLgTdIjTKXqU253c5sd zeLsdV&@F0fvXo{mYX6(Ep?$d$u&rlQ?3|zOr2U9OcP9Lin@oG(S((FdJVR4GH#L?1 z+gg7HrHxi@=;mHYQGY!*;L;@j7OHBwGe)B;1*IvHu&~`3pXy2D-I{pV-a_jgY&((a z93`|Ffu{aglf*pg^VYx_c(|1Hex>U~bwJ z$fv)HIgsi!N}5@uHGlR1!`yk5rkJ;MD&{fGTkR;xYn64u&dB)=zupshmvqGZwSjJ^iALwm<4v zg1!>BgaI#m=EIs>UrwlXbNDNsigUg`YJgjmPG_3*$ zP4~n!c9-bZ58dbA>sH^u+L-z!cIzyz&H78u?NKN=-q8EGDEoC(xANvadz9_vZ~1!~ zkBR08P!@lrW@phwDTWGcRiYo$hPvoKdc4FzVwM*+%{z5L0%42)Q$ z^^CGD@Q-Dm%kByTih{+FLi)b8{g8?*Su# z{%;#xA4FMhb+BYbZgt*c3)twsI!PM~N`rwq^M&FA?{S8*guxPZT43bng+86^nk0Gq zkql!NGO51H#GK&HWkH(R&J`q*aD??aaUqBGrU%es(t}`jA$>ss4qzU(0Zu%LKLrz$;hc{mWz*mnh z2|zmS81ABFbD25%%s1}8=WV}ma%gE>mARpI7<^Yfd-2vfJxI#R2g4mmH7-XuQ`t$+guI$8?(|7*PyiG2 zfFdEzA=gT0n!N+AnfxhdpDB7~ znMO0+hz1nwN*H?6LL^E{*CI(juKRqId_ARhv3hanrm@;XvP#2i-4tn8ziEB@{}pK1 zwK(nhUcPVm)9t^J10+X^^a3}7D~^Ys*n9^iz&a~vA*wM!t-^-p?T3C!ryQ*I!PjLx z88)t>nBS3;2!x@o?l}G-c>$wv()tNN!z0^j24wRLh-4~vo?-#<6d4l_J z`ZIfFwNL8{jBg~u3JZ(o`lN#%7bbIa0l2F@yuKl2lnm0S=ctnxH9F5uarjwjV1HGc zv^fxrq03_|ih=Y{ua9`OY+~vN8Il*1rED{!fp$|h#kHAtYKCQ2CJLgNyoH4s6vvTi zau@9a7__%bNUPTfV{9K~O@-qS%LPffheOrs)>z8NlhPt~f+qLta^Qz1gDuKtge1V3 z*b%_GRdA|-Vc>f-2b&iBSZFX%qGP=v6F^qVY-eXQ;bpflx6EltBuRO1Leh7|GgdaS zAbD0=GG1~S;oI%@G($o8Wf0Wk+C34JL5VvG`d(!HuMi411cb0OeSOZtj#rMd3W#N{ z#7|O63=M3%H-=+ney7}k9_~1Hc93v=794^*KyElis$F-ApA~H%C)#=x0M~&$jP*C_ z%3!Ac$`^#r-p0Lk^dR}X=GWWf?Vn60RyWHs1aZ)i?T1L57cr{F`gCpN@FL%_9f#^- zJH~=rrmH>kr1JC^>^9QUJBlWr(__-Nv2`qR56AUypbru0P0*8fLA4tlk0rH}JZ9AO zIE54bV40Cmv)O-z*iS3)glfwh7ZEbQ&|vB>s}!TiWI+^)X+dG!(-qf~@xSU4^q(3v z6zO`i#dbS8feLMFScKjmt?Vb;Bo1km-mA3 zx5E}K$uP$4KPCTj<+bJo>j1b;7HF_Tw|gGdbULCQ3ZhGYreA0157Sj@3a#BF^tD6- z*=G3;5w`K7n@vb4C&X6_rIVx*MCn(1d>E)&=z-3wiCmL*!UGM@lqoh=UT7i9F}ta) z(_>m>&}M=I?vEN$HgOYy^lw)zhVlog6q`v3Us55{@vs=@$j%>x++j8(4EPXzw_d~t z82`s+Nvn0b@IQjf`r$+5UaZ1xog?LR`fbI)qV6p;+9Cg6e~jViG3Egy^lnFUlirXMmA5Pvm%!}T zZ?47-^(o?F4yR9q+vvB9Gw4iR@xx?$*M$C!hFbGJz+{!`?xzR z_S6IIqzWgz-yEe8i2%v^Bh5FHQWK?ck5zhfbVv{`ne4)!OineXnedswXB)ydxL|N1k{?P`BqPYk~=hx=-b*Wqtw z*T);x80iM0Gp>oMyi@n@jzvVLgPHHjvV52f6z?kzUM5}NGUUqT4T}D(rSDx-_1S4! z+i_Lg6w~6~vhaLIPPo|9+VX^IjPcmRw$fH3J*_t1*K%1s=@i5iuKYv}36gxt6}FkNWCvyUIW)vRV})a41jkei|kapI6jwesapR18>?!%=5etaM*6_1rYt^! zZ|*%p*87#O^P-0^-#ivW=JT~HV3cueIK0W8ACG!()BID)l&9z6mlwY9a;O+?A6CPE z(w{@%KUekTl-!1vFKxO{gICt5TeEE?hx&kRfofb(Bq_wj{q3`81`98;!5W}%Gl_=e zsl|VgJW?ik4diGxy`NZ8a{}_hMHVJ(CyHSuMD^wkACo_3eJX7yXIAtK<8-y9;WL$; z%jv8vPLx&Ce)?FHMdwp7^ndtV2OOAGU~ssm*3IhC@i&fn%e}b00a2^-Aq=VEA`9t) z)QazwEWoVkDi2D>pb#;smA}z(ZBafjddOo#4EH1930bZt-TOH*lIAoArnbCHZZ-X@ z?%ITogF!2kJGq%SN`?vypM8t-8(Ci-lW4khAf+ zjGaWk+kx#t2}3~{y%lR>G0wckot_u+Q7e6m{@QK6;`l}HmL}1>N~PY-a=g7mCZ^bG zEDTxPuLAw!c+tCRA!T>ll0CjyUaM+hAq5J>-yik&;Yg_Gxjc-xI z=)(2!t=`yiqh_s5VWsu!VoHc6-u_H_Z4+hDj(-j4Z`TzeMC8%!MD*0Wrq8%teg53t zMey}W4jmcU>xj}r8?0hZ37C#p$)<%l4osymDlm4IglP^M{tsI&ksRn2{g$E8bSh=z z@@QayczgVV!hci8X@)Fs{{MZ(bp#7eE6*f$w0TefzZ{*1V2(V& zf0}LHKb94`&+v`!O5Aa6i*HJzUY!d1w;L7+J61pH8zeH%7H3?q*4`}^_Dnb7?U8UDautKm#8l7Rp5$a;oijdCi!0Kl3uap`eo{GYyW%T zj4UeNY0|Wk%u*MJlt5d*l59HYFFOXgA;9u(D5y@%f^j#3wuvKxr@=^or0&3_XU+%n zWsd_uJz4W*DRzx3AA6uhlu0-jezC&fh_BPGFV-IT*4%RyjKD?Ew|RYSo$LIxH$5gy z31WDg{*!1oRK5zMchy>?cmfkCe8xU03CJ|r8vp}#AV-i*{{cM*;K{J3TH#oP$+y}l zn$o}g7t;I9oukA}kMd&`NTjRf^1Juk?(6!$C0$%X84zp;83Y8HuJ#r;&U8caLeR*u znfZ|Xlnc!iVZHbH{GH*p9UBGVXuUM9ZSSlEwBLNc>W`r_VMe#;QYcUW6vQ^QX=j+v z)%oh%l*$2Vi7W!d;i5n=@#>2pE&xX(z#e;0sJEZro4zgAt_Wz6ltgr1syz zAY+7UK@`e!Np6>OeXslkp#-NqIK@HTa_D%MnddRM6SHx=-@z*rW`%*{uRpN2%gIl1 zWYWg>H(fW4-joo7UY=9c#y0|n{ZRs)59lkM0R)=LZ4&xX%Jr+gUDehbY3%Q=~PsqF+XMw(V!da;ikhLt|JQNY`S+!`7b4G1#7W4 zf!vy)M48E3BQ!iGkIx-H-$9#;x`#5f#7BqShtr+=Qve+zYn6|ABJ*7bbv*+s#JvFw zFCPN6=XhsE#G#^_T@3frN?fyuNn^}@Gg|qoNa_QMWfBDt`Wp;4zx+(wLVJPZ1V54r zMMi96wK2>gW~N;Mn4^0}3sbK9FAx~NZ>#0fU2KMk={(*IMuUAFHw+_|&RBHvy~yNA zd*{&=^nmSDZtn|YT2pL6APPr_*m|gFOJRy$fT{7b{wbV%>aG=fKH$!ZSHuOAldp&4 zZ4A6HbVx|lf0d#++v}g9#=0B-vwa-Z!P{%SQ$5kICTUl!R#R~beQq(>+%ToK`(f#w znH`tB5y|Fp--}V}jQ1~Ul1_Vb4i3%l8@{WLtc`EZ0uT)MzKuBN?VM}$7^K!ZGRA#t zB$c~eKVxmO!8|QC#XvvDj0nc`J%o6`5Q(mSo9gH=FFx3=P>Ap~bVf@dCip1+)Ii}N z(-aH4A9a0MK4pYyhPrKqMBw-<`N~f9?+e|Tz5-HtNJOQS+Y$Je?3)e=F9`qSzSj~x zy`+9w_2-TBzwgzB4Ncym5wx@f<;UkB6?WXz@aYHTZVW}LXR6@$!^~Y~sM|~5|e)?kF#xnAqw5lF^@v{wA?i(F! z{5*89lC$j#y*HY>S5fzo=!}D>ekFFc6b(`Nle==nSL0#oIAJJ(;1*E<_I76;hMI-? z_L44+ivuTS_GA%ed4J!^1N6iz2!D%U4sewv83JO23b_N~-h=KaP6QrC7;F9b2W^4n zir`{rbBcE#v={uC^UC~N`Vz$As>nea*1^sFwf-_`8fijN3!tx+=16h?%FZg113kW} zA^>V>$c8(Jmu@76$UN4a zz4oCIaCv6%2AEt=vck`P&DZLtx}ENRb{pUXxL|Yy3~g|=TOp58zW)XL4r@YdfFw)4 zlBQfRy6|v&DBvwiHj=6BQMfG;f+XNhfI3vxepQ~tT+vdNIpIJ!-EYysadqaErEw-E z1EF*%E?U}~26LK+w|N*CRRx*VRpnxFanRf)o`KwaG5#O#kxk7|?EjCbvkZ&si?^_Z zFh~s{(lH<*(n{xmfV83_-GWjI0z(T7FqDLJmw-XHl!Snkl(Zn--ALSh_}}N=?*lxC zbIzW<*Ke(N!R`ZWygYl~X%_MM(?zhb{9M40N?LjH>7WnEY>loL%I}j&Gm^9!5j(@V zVI)pH_jM`>`KW~xz^JXv&`lN2g5f|%r@D-D*@4&9d_%*a&vlkMs`=owC%Z|Kb#;8^ z{O@$zjQauH6GJTdE(YT6lomgD+vn;>xD(2p@!q|UY64DBZfC#01t!J4=OR`Ltb529 zM0I{ThvrB4qQl(br^aEOonq#Yl22=66YhfVq0zvIr4+Zh^bLcqE;L3C?U*3ZoVp{5 z>V#)@lTGMquXk&ls^?~Z*fS6L;TN?3apAmG0^hB_H4d`Q$urO$OwTSEN@gFplDpS+~I z9$8;^KF|zA_>6M*-1Dl+9RM$J-y!55pE){A$ISGg?x!3rGCb5FVY!}0s$=ZsO!Av- z(;wwDcZ;__+Db*0+3|JlQa$!>-iubsob(L&^1o5rluo{miV}B4Eb7#umjdE8CCvD-dD!QgfMLMwuzboWmRuy(}cB=$3_pr8G_Od{GAz z@MimhUy+5d?Tay*$EQpV=mQ%Vic_1rvN5c@C9wzcDcb2`WiF^NxZxeSdmt<-YL4$0 zC?4`RlZVA}{TZ6mRI%-8>sM^y*_%01mE~=opFe1s7rK$hrrcJbpDtsfD`ViJS?f9@ z4+@i`an{ElwNwr`f83WKDkZQNqAc!bcDR5pdi!G zrmxm_?f(C$`5qlS-%lePP7&96bJ%dNrv6@caj;ludDKkmIy z!J&#&E{%*m*aoxT-ELnr%B{jfu-)Z(_exgJTBPDZ_MR~6Som(s{FAm>dcp(PBPk3vL z>I`Lo>$Xe;PoT-v0N2;u5A=(~HWHYvE5Vqx=zY$1YQi01Oh`!rip8jRS<)sFcF)qj zT=#mbO%Ey_#NuH^taIM$CGBnQZIpgpik9@aA*%)wKX5R|bL>L#NSAKa608zDxyA7B zbc!Cko7i-Jt3+*tF2!(01*e0yzW=D)^1kO?{0Q!&z2oLn zPP6|^E2-D{&didueuJ+ zLZE(zNbV9IsIQO(NgWEOc6dV;p+YIpJb`MB!ta^fb@kIqDMNSvNvWcaGQHj+pwQecXb@6K+}T6M8l&52QSu~WqBUwC+Pvk zEbWyze8NISxK$uJ$N~KIauSlp^J~o4#vU7JAZ&>GNy~}93fOd|=*r`YA~Pe?p~!&D z9*U;o{$%4YD`}qNak{*vM)uX_`I|T@Tk<%_ccr-O0%~jjUcR1HKX_f~oEea_y4^zO z+Kdc=Ddi!Vs2hZ<*WVbOm@x~{BAsWL`D^NnA*ZhkSSsxOr;tW?B7q^qcw&*_(bLkf#(RX+FTg_H2}A4n^G8FStc2VOHxW2RH~R3J?LFCHa+TN1y({PC zGI(dClxYxbB|MJ3+44TARzfEVVdFzb+?zRZe89n!Z~XxpVWeF5#b@2J z8_k``6>C@W;Q&FyPfF%8LyVaJI2w+U&FPy)c<$UGqiy*Tj51{?@$Ji1q12?FC3xJK z{k@L-Intd_a|ktwJr#pY@8+MFsm{OV!TKf_o+wKcfaUXoiNmv$8wQU&Y=4tzDAUOaOd>f{jTg}zdB zW4|CDYsef2V?)r)cw=w3-utr~Jf)ljcd-3Bu>HX3VRv}@1>;XD6>XkxL)d1lE9}_4 zPQIAzf;a^d+2_=C^Xzi-2VZNxqrjR_9)RWTTukz8OI+EvY7T8dv4N-&78_ z%ojJBg#3>1BVb;06$m1{M;tH8aSwi~BO}d%24w7BC5uGY471Cjt)fp#HtrVD+GKP) ztO)TDdLgK{ds$xPCm+v@ znU!{S_2EqnvDT1-HO9&O(IanY8))l1&0?ulU#HrBM9VAxYlJN%o5}jbRnc zj-JS|yCvr{1&_SIiq=zzj{b+n#~#QbnYg%t(=RhZezz`a(JPbDFX&r%vItu60p+Lb z8)J5gx~;l&lDzZR;f78ct^A4z zN(n@Rt;PG8`|ZQrnyfZe?=sr#*G(A`NzDfXOI}r>yhW8d?i70$NO*}DP2+(5BaxiC zPj|sqn5q{!?ON4Vf$Cb+yPQAnHaB2K$k@@g$(KRI3-kSW(M6Y?WRa7}r@&-(>PmKx z?mAh!T=js=-Uuh^c>9c{?!HK2-1mvkUqcl$3{PH;rY!f53;25^Tzi!!d24;DRlZx# z)O9XuI=>*JvGu-K#JD`Q5aUsl^OZs->tWv7;V^j1_`S-O*S_=V8t4_e)lP3rM3*R~ zC9G?nyYGLJt3Ie9bs~B$BMuRK|01+d_WJ%G@E9>1BmUD(D1u()xqN^CWnq|p!y^le z1Y6BV)cmD^)z2=A<0UD$KA8JeDa!4<%HOx&e)rW|nac55xSl1Lqk1fycKYaK4WH;a z$NX|%VCa3CRuu5KlKl4wOMRUi%60p26v!>f4JV{}pR;#sJDq+naZjKZJ7e}@N1nv< zN4g_mg)&DVw*2LQs`ijg+u4g&)D0=TKK}>+gy3q02s7fKY`S2 z#;%Cz6o&VpePU6CnU+MMlDAO8K3Yy%TssVt)G9DZCSE|m(we;72k38|#=`*15(J|KU{Vi^6sA-wFyVbe%szPVW zV8IyxBMKZZ3IjSFe{+t+ira<9Z-pDf}La#rM9L1EnBJRutRsIM z6-mf)?O>{n@Fu6&)9NE&Fgz4H%aNM=hhvEEm{Dy^5dT|tHo&!pBf#MPjWyNd$Ee(L zMr1B}UsN(4En4Ec&0=a{7rgzS5nrcG37lPg-0YN3M}myQPrQIKW%bSeWub1K286^u z*ktLh{$v7{xpD#VdaE07-uds4J#7&19!3fYsG~%13Z0Mbk^VXloxJX{+&*}h<0lDM zxb^Pc5zwSNO_X zDPg#rO}PI;#%l(UN>H~-3MzPAv&RH_Pux^zA7UZZA`1Y#LekKET!pwy?Xkd2Y#txBOXpY+rjt!QE9;#@o)BLmqg16VP*PpR|KuZy+gn+c}Ks-z8&AI1! zyuF^LQ7j5^J)un9A6wfKZZ~t^`HHD!sB+mn0*6$RA98(*$@sd{3Y1$!PQd}0bk1#U zAdVlHc=I4PGJO_vcd+|2a!rjJCa!yXz^qxRFAX!rLkdfStouG7EZk2`MK!g^RR?R) zO%WmG**M;7h4vC>1*03Av%ii+=cO=2(GZ? z#=^N&OwkK?7HQLGh@q*0%Yz~xb)bPdxPwNlvdDgN0}g?CFmo8n8kJ)!{znjh4l1|u zfPUR~Q9QM9xAfwfvDZO4*oQ88QdhXlt=xFEk%K+^rL|8%rbZjn4tndLBCJNKvS&ta z3sU=Dih0e0}7VUhhxyUc2=ynBPpTntE`WM+YfJ{af!ji)S; zXC?P*e{3`VP5ry^)gm;u8u+}09xB`b1NTjXO9!8S6K8n0nnr;oVwVmz5wvUM2Gn;! zu}4#M#ty5&EZ}4Iz))J?7_EE>>A#MK5ZHNjs@_A}W;&p>m1c%K`qg+yb)DEV8NO@C z@C{4gNk3nI&o@R~`bsIQ^y4RikZC~;d`-&cFhSf@VEtzuv0OqFp4YuVH^D=Pmiml% ztW_D>vh7E_c7JlzXx5RVYpoqxF=UC)<9X6j`DXZ5MV>jM_OOcH)wHUM2XKiA8+HEVePOmnqpXs;h zk6Brc$;&X*y^e7z5J+IXEKD)pc%^D=P$W~AIXd`gv5wdT{=0aSKH_mNG>%ZYk z7vQ}T^iOHJ?dH10S-5mddDmf@T!H#G!o?xlg~Y@CLCqyA>Y3rZ2IYKi+b{PktqD%K z&o-81F5PO`&JQO!*REn7zH!V=>m2@U3Fm_6GeyQZN7AQv3aWO)UIqa6zwRkI$PP@$ z=zr*D>FHQ=8vyhB%gV7AUEh#W#|&Zde?#uQ*ISPKES{!(pY(i zLqe^Z1m|}?z5qN5HGryc?Y;jR+%GHAI4BJf$^uJckUp)0LtipRypDPW_nem?GkQRTM3CvS=s;xn)jzea(mvpa z7Q9*JSBHjo+L_WH;B4TO$WN@7_AAmYcrro!fC~~7>mSryxUK;!(ef`o@14+fUl!HU z`>p;f0QlWIrL6E3pp1AX+#zU&Zaf$y__cvGImP>^c6uT52BC2cz{aqLI-II9YaIdL zQ5r$fN#!8X1bnZXbk;%r*`Y4>BeMX*=W)-?f+tCx^}lRV974#DL8#hqsqIvd#JmpB zB6i)M1*$I$vM>(oe?cq!R1H?bB@^M@;&gfgA|Q)Sr^sTnM&rxVkrVGSyh*y&2eVNE z&sibKws6D~PF~=XX0UEd5}k@Pq3-caOx6)?+KS_XsH z^rgvhYt{doEtKN{AJJVypJ}C)^N2?OPxoyDlNa<}UdducURt-vIa zJZdH&oWo?p?a&j9r$D~Fn10P4MjjA}QiyTIM--8G0i*_xpxoEMs-2>S(^phRpxv;H z9`AuDa(Q7*wwvs2CqsY8vc;N?8NTUP6c6)>0+ktV2^v4jrwj}ElBEGyQ)@IkDJsk5 z6PU$ChfMG8j#Gaz5YJ0>(PJM1Wx&Ryb=Y@z{Yk_*tG4WNX7pIR9Ay}OZ0?L5^0|W-no|;7DS4>@#SmNQG^~JFIzsq+oYusx1_rigy zm9$AADVcBwYx)<69-Z(=%qr_5-$wZ;(9^I#*`|GN5%oZDrQj{s9WQTymJzJE6+Pc0 z=0MpT^3C@z@-A{Hm=Pni753wnv80F6lZXoPkHkpW1Y9WJQj!8?%{(Oe0z-=whuu+@ z%4|Z_or_RS3Bl@1-1H056|(fqLWF1yv*dEbR`@3r zPkzujD(X1RBvYo95&L>F^WM7rzNyuMFqkb)dJ{yL8SfR6N^-z(r|N9-#9*oX4xMy- z5wz*JafsK&-2Fcd_Q+WR6J*xjaayP~ur6<#^^;BsjI%fI^l>pCQsckzV>nB84RhnN`EmmtbX+p#JsaVqG0}1*nY6LpkW$tlN4)odRQfK_d}X$g6dof-ulWO8opF zoNw>|K;rO784^!Hwi3!ae!RYv#I8OvNLZEY2W~5WR94H6m^Tl|?$CEgl;993z}k<( z`2<5uSPLuOS+I60i$!7iF80WF%XzA5V4WjB2Xo=x$VqF*!O9h5xjqzxV(G2pLisZ{ zNxltBq(-i9Kb&Mvf?58pZ~5RWwQmlhW?i$PsqewaKwvcg8OB#Q%6pEbds}UWnAI~t zJ-l5MgTN)XG|c9)JEj{daA>{06hbX~jk6gI{GCZq=+8b zJgI&4rj*}WAKJ@{$IDwXx-jc@2=8A}+B;HKJ={oqk?i(apwR>Q0O)P0_}okEzq zf({dzV@|?5ZLmsY($6%F!mwbHESc_M6&XeZcY^ViOJCn)VUzB%D5KNFXQYtigmJZE zG2);8GQy$-Twjl`ka(0KjG@fI}@~p41I3r@D2PsWRTu|ef4e{k8LN8-yaky!9OnHg_$|Y zCe?J*Wr8N+!&dD55nKH_ts$jq)^ci}3}+J=BygH~GSAIUT!|L`%zvYbF zDBwq|{ByFM7oMg(wU<}M8qN-VMxRq>_sv+Al_NgSv<4b6al4wsyI@P>u>|mlV8_n$ zSA4*9L2Qm@(%)E}Z?1hAx3<58xS zVJgS_y!^s@Tx_b+vZIAu-_}UKjObZZ7CI`aHMx2pta1Jhhd8`!@L-3}Ro=gn&9_}1+ zKH7FbUT{Yhw}gHF0W3`H*|W>Y&gic?9ieo2-Sy7e%|&51Rq`WF?itN!UKrNk>0|e+ zr``H#-;?)kzdg^pD)xJpW}E7|z_VH95;9F5rytqDC@z^BQD~8n9eqOSKUSTTzZm`K zir8yUaP{zoZ*QxdttBq%vhS-P^{|=#?db{dExcx`xL$6UMzLVslVnE{K6!;FOgNTP zs96iv9QYaEkP6j7t%vVsU(aROyG+i7ZdzZP^_S_)jT3#hU7$NKjO-shXI{bNicE)N zXFhO``nf7n+^hz7OT)npM(#$*ph;F@lyI;fY51w>uYFdnhY^$p9she07nya}0lzbP zJ7_U1i*cSFtEvnyE4xmlmRz2k2;D`=ywo8|ierDO{Hat@8^tpkH{{$(*qTE9*I}NL z<-yk&rKGSZ9){azA8BoUF*HmAs@BNw=o#iEOoI&%-fS2@qlMn=BQXhCE@0^N*)}4&|)x)a5fQPZ;t*p*6ZAsB|RHi!wmoV zrbd3@@Nqkc3CQr^Lh~0gYUovx=Q4I zMnm4U7Pj6$yqhUr@%?b|Jx_OXjr03I1#)w@*L7=+B4o;#;k$9a9K8E3^i*>|v+ z`c~1qubO^v6RILw-^t;%o1hvy9?hvBr6ZMATJaaNp|lLAuG$Ib?iL{{g7naW`$u%i zl`h@GP@l`5)6a1V_otE_k|UCIe}opsX8Hmv?iKbK@4c{bF|x5EJ}SDuH3h*IzUPFF zT!0+^d3@7K_OFJAs=SjzpD@; z-L9r%G$aHDz3nX7Lb#bl0IfnDvuw47G;!+hG{fiX^#01^BnC?!vg>CP2jgVT2-3ht zkn&x0`~fUMu~9FNX6GT5W!lOs&VEDSToS{vy!Cp*h6uNLVL{CX^n7%o0PDam}< zh8V%2i@&Za%a1?K@%C83)=h|0(|~0YE;95}!*N{nMvNuJp7kV{h!lF#uF}o>!$~Ku6ftWib!l^eZKO{QYKR+Cz86Ums_0;2OQ-19ArpWYB!3R2`%l1@|0(8 zVgm-nXecU^$L7bu;?zNBaq`wzeW&H=Rh{(4@G*mGj^Dr7S#s}@%vHPyi)RSem9n)~ zPav(lf3(0agWL4x!GFwdYt7Mur5_@JIZ(qNF{qd3;UBs8vM0Se(seaavQi2NgB!5M z9zqd2((>4Z-FktXIf)CQsd849f|JY$QFols<9Mb+@$YbtjS3xMG}Aef1AC6-FeWDM zmfz2K^V@yGvKY6>j+*AOzg3OrcI<5*Xd~ZZCzn(`du}41mF165mKnuA$cgIOrbU>L z54PQuY{sZSVuSuB*Q}h)j~D{1DW1AvbP<{G1g(M;Vl4+ndiAu0J<4uWmk)fe;!rOl z`R8)z`%s>1Rr&7YD|p*sO(R%=GN|gP7q0a&@)7yU``y~x4H(7|2x@PP9|WR;byW)2 z1LYlg<7%7-K_V(9lfD_dT7OsOdc5i%5{J=E79-IxF8ktFq+euB9%ExkqGNz;m$1(d zfss3e(mzfcoM`Bo&7{5Dt9YT|wG=w70RGnf-YmLsvi|n(r{-W}ChMT7#IN&oo(K=viQRwB=@RJrJF?-v(PvM*Nl$Rb2`6_K z{xDBIVKVr;5Ez+ff~?sp3o@W}6dYP*GDRfjpt7jBKPhTg}@^^5(h*jFWH1&NQ~&KUU&SYtfmT& zU9T=!tgLs+1-DVwWT2_INb#f0*+J<3$Vj6a)M@UKbNAlSy-)4;Tw=nelfY+Yk?|dg zz{mTI5n-jW=9G)N7{gBFY_X5-C3g)*w!X|Xw>9h9uO!zVm-w$Alb!fVjvoL{+Qvqq zyM$aa7mteWLgM@P))0+!p^snucj_K0!svWG>0o0JG??Ib&b3yW;1~*gQ(IEX$GmD? zn}`i8yKP2(pT&{_QzgpU1=01hK^RK3*yiUB6Yt28^%wdJyqyeA5THOSvnNS|Bj2#JH=S{ zwSde_g@L*3s;P20!#}C_9%&6PL}PgiHC3L`eZYpx`wc>TRLDG-TV_XC8=P+}it{E@ zDkI#`_0RpSXa%j8Hm^y+_Xx@2gm}8=IwK1VFO8X7ZoVM z^$oO#m5r<8{`zEK);E7`s`t{U8OGX zKOjhfy2}%FX~$AP76_MuD!-^HFqAw<+V>fay%|Jq7ccx#*qne^mY6DPRc?)RMiot=nn) z1kDS!dNU%$pecg%*MR=9k2A%+d#| zV20#j;E1L#TpT+Bh-G0z5WxWVsa^K@FKwR_$@7bVUxSim&YE3!2e^Agl#W1ey<`>-A&W$^2hdK)>gm-Dl*!KV*XCa5*<;f0J zeAfxsv?u={o+p=k6w$Ez>eHlDHf_g>&@agkRqPcK1XxOsp-SQ`W zxcscT81I=BaON(#&r8E!A^HpFihRy(c(XMeJ_fv2o(jG;kr;HXm9E|G&?4UbCr6Z- z!)Ie)zE4@kqhY;R&NF;E`rv|Su9918>}BA;K?qND`2xp&?vz8Q~7tw3dKBHM)zQWYN==K6Bqh!2$jeebt=$Ex05 zIJzwRUrWko>^!3S{WFF_lXLowgU}qj4!F)_;~Mp6eIJPX4BiXKiy{y-j~ZW`?-M zdsSp{v?uQk>LQWC$;7KRqC3K!%J6M}3g@uPM4HoPC?e-xyjz4SXf3fuNJc}wdv`I+dJx9v!h*u( zcJU-osmJ2hW%nON9R7hTFbUsoU`~O&Ow>qSi~H6(b~_6}mRsd-f`w^Fs7Wec*1DlvdP)00$M;= zA&qD3>GYrE;b<|C1Gx`A!@^dY78SDPcue`b%ua1dH%2U8aR!HLU@J3T@kN98l0g>o4O z)%y3rm<9Hh_peMJEn`0|*vbve5LlnfF44TR-9F}Iq`Kbg_92wheJz6W84kg`t}G=P z?GX72GXJ(8n<#K%GLCUC`VsPWSOmR^w6F*nWmO8Wh*~Ycbwq)}2FvKi<{R7={qK~a zs!wmLFKn$hSd>D7IY40MEi_^g5-7lDIMY>>~~I^lva zIy9+5V$b}T7JlgiqR$5|x?)D`xPd&CqX;-9gc0u4qi4z3yAL7J4ELCM-@8AkSf1nW+VHrtSjE&f4TvPh_v? zT$m@$PWj)J$D|GMld=3t`P%6M+t>nlMs&@cum_cmyY&sWz`cL@(S8^}QNn1>x6MexRbZkJ`A6FLTzD$kt66=ApGA_Hc7exfojI=AEPw!SzxryU^!=L8?2`Yew>iaUGyRK?;^ z;6{iml1JbNHN$Clt?w<|9bcVmjvK^MZ>|Y&Aa6QcCrmCjKl`E4ig23oSU^QnlNK?b zGbd5w9Q>N_K@bQ$a5EnuVNtFJB?M|ztf+9fq+V&dbaB1NL0iUMQzZtpFr)Z7Vu{2z zz|igPvgXImYLF$$i+!fY6``4Y)&47Cs$5?u>}f?zJ~27p#={gSh|Y_q>(HwZE;rRT zupBKTE7lha`(cGOqtT(Po7eW@Vi@eL>Yj!5h<5vmSyHgbGuvtyhgfH8+O~hVu96zN zah(>YR@YcELWSC>M&wnK*W%TeaYj8qR2n|XZJd+Nbfj|He>Rv)d})@HbREpBsdXUbF#P6{ggRVfEB&Q*-BD#Yq1QtG#31~eZOz#GT#j&Eth|rpXW{X z4n}_(h~A^*vLF!P$x#-Y_2nl$kDm?@?NhGy6KBhNBC~ZX4F`htk?76@%UAdD%3XiC zR3ooE)6+!Na72|76e8?)ZyPh?+hUW6c^uov-sBfVLiX-ffJ?v_oV43tGmXEF8^*lo zUmsT69lk?$JH&ARdZq=F5h1B6_wG-PA1Yh;i=#XDigX{h&;CH zT@Rmc*T0S`T XwCy*Qa?ezbW*U01I`SW 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 MNGOQsioW&yf1rcZb^rhX literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Images/trick-dp.png b/trick_sims/SIM_singlerigidbody/Images/trick-dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a7880be983d6d1c21685717144597c4fe2075166 GIT binary patch literal 90375 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 UoD1<3JOi&s59IIX-qZ8`KVF;DU;qFB literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/Modified_data/realtime.py b/trick_sims/SIM_singlerigidbody/Modified_data/realtime.py new file mode 100644 index 000000000..05daed291 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/Modified_data/realtime.py @@ -0,0 +1,12 @@ + +trick.frame_log_on() +trick.real_time_enable() +trick.exec_set_software_frame(0.033) +trick.itimer_enable() + +trick.exec_set_enable_freeze(True) +#trick.exec_set_freeze_command(True) + +#simControlPanel = trick.SimControlPanel() +#trick.add_external_application(simControlPanel) + diff --git a/trick_sims/SIM_singlerigidbody/Modified_data/state_data.dr b/trick_sims/SIM_singlerigidbody/Modified_data/state_data.dr new file mode 100644 index 000000000..ca5afb403 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/Modified_data/state_data.dr @@ -0,0 +1,54 @@ +global DR_GROUP_ID +global drg +try: + if DR_GROUP_ID >= 0: + DR_GROUP_ID += 1 +except NameError: + DR_GROUP_ID = 0 + drg = [] + +drg.append(trick.DRBinary("StateData")) +drg[DR_GROUP_ID].set_freq(trick.DR_Always) +drg[DR_GROUP_ID].set_cycle(0.10) +drg[DR_GROUP_ID].set_single_prec_only(False) +drg[DR_GROUP_ID].add_variable("dyn.body.force[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.force[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.force[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][0]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][1]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][2]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][0]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][1]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][2]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][0]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][1]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][2]") +drg[DR_GROUP_ID].add_variable("dyn.body.pos[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.pos[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.pos[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.vel[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.vel[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.vel[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.acc[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.acc[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.acc[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.omega[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.omega[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.omega[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[2]") + + + +trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) +drg[DR_GROUP_ID].enable() diff --git a/trick_sims/SIM_singlerigidbody/README.md b/trick_sims/SIM_singlerigidbody/README.md new file mode 100644 index 000000000..87f83fed5 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/README.md @@ -0,0 +1,167 @@ +# Single Rigid Body +``SIM_singlerigidbody`` is a simulation of the motion of a sphere that is a single rigid body with six degrees of freedom. + +The motion of the sphere is found by using Euler's equations of motion, and can be controlled by changing several initial input values such as force, position, angle, angular velocity, velocity, and position of the force. The recorded data of the motion can then be viewed and analyzed. + +## Building the simulation +In the ```SIM_singlerigidbody``` directory, type **trick-CP** to build the simulation executable. When it is complete, you should see: + +``` +=== Simulation make complete === +``` + +## Running the simulation +In the ```SIM_singlerigidbody``` directory, type: + +``` +% S_main_*.exe RUN_test/input.py +``` + +## Recorded data +To review the recorded data using trick quick plot, type: + +``` +trick-dp & +``` +The quick plot should appear. + +To view the data: +* Double click the path name containing the sim directory in the **Sims/Runs Tree** pane. +* Double click **RUN_test** and click the blue lightning button in the tool bar to launch quick plot. +* In quick plot, double click any variable in the **vars** pane and then click on the single white sheet in the tools bar to view the data. + +![dp_example](images\trick-dp.png) + +### Alternative method +An alternative method to view the data is to use koviz. + +If not already installed, download from Github and follow the instructions to install: https://github.com/nasa/koviz + +To run koviz, type: +``` +koviz RUN_test +``` + +Koviz should appear. + +To view the data, double click on any variable under the **Vars** pane. + +![Koviz_Example](images\koviz.png) + +## Dynamics model + +### Equations of Motion +To determine the sphere's motion, we will use Euler's equations of motion for a single rigid body. Euler's equations describe the combined translational and rotational dynamics of a rigid body in three-dimensional space. + +![Equations_of_motion](images\EquationsofMotion.png) + +Where, + +![Force_and_Torque_eq](images\ForceTorque.png) +* is a 6x1 column vector. +* F is the applied force. +* τ is the torque. + +![Mass_Matrix_eq](images\MassMatrix.png) +* is a 6x6 matrix. +* m is the mass. +* I 3x3 is the identity matrix. +* I is the inertia. +* C m is the center of mass. + +![Acceleration_Omega](images\AccOmega.png) +* is a 6x1 column vector. +* a o is the acceleration. + +![Force_Torque_Remain](images\ForceTorqueRemain.png) +* is a 6x1 column vector. +* ω A is the angular velocity. + + +#### Force +The force acting on the sphere is calculated by the cross product of the rotation matrix and initial force. + +![Force](images\Force.png) + +#### Torque +Torque is found by the cross product of the rotation matrix and the cross product of the position of force and initial force. + +![Torque](images\Torque.png) + +#### Mass +The default value of the mass of the sphere is: + +![Mass](images\Mass.png) + +#### Radius +The default value of the radius is: + +![Radius](images\Radius.png) + +#### Center of mass +The center of mass of a sphere is equal to its radius. + +![Center_of_mass](images\Centerofmass.png) + +#### Inertia +Inertia of a sphere is calculated by: + +![Inertia](images\Inertia.png) + +#### Acceleration and angular acceleration +To determine the acceleration and angular acceleration, ```dLU_Choleski``` must be used. ```dLU_Choleski``` solves linear sets of equations in the form of [A]x = b and returns the vector x, which is the acceleration. It decomposes the symmetric, positive definite [A] matrix into a lower triangular form, where we can then substitute and our equation becomes: + +![Vector_a](images\Vectora.png) + +The term 'a' is a 6x1 vector. Acceleration is equal to the first three values of vector a and angular acceleration is equal to the last three values of vector a. + +### State Integration +The state is defined by position, velocity, angle, and angular velocity. They are calculated by numerically integrating velocity, acceleration, angular velocity, and angular acceleration, respectively. + +#### Position +The position of the sphere is determined by integrating the velocity over time. + +![Position](images\Position.png) + +#### Velocity +The velocity is determined by integrating the acceleration of the sphere over time. + +![Velocity](images\Velocity.png) + +#### Angle +The angle is determined by integrating the angular velocity over time. + +![Angle](images\Angle.png) + +#### Angular velocity +The angular velocity is determined by integrating the angular acceleration over time. + +![Angular_Velocity](images\Angularvelocity.png) + + + +## Inputs + +Variable |Type |Units +----------------------------|-------------|--------- +dyn.body.POS_INIT |double[3] |m +dyn.body.ANGLE_INIT |double[3] |rad +dyn.body.OMEGA_INIT |double[3] |rad*s^-1 +dyn.body.FORCE_INIT |double[3] |N +dyn.body.TORQUE_INIT |double[3] |N*m +dyn.body.VEL_INIT |double[3] |m/s +dyn.body.POS_FORCE |double[3] |m + +## Outputs + +Variable |Type |Units +----------------------------|-------------|-------- +dyn.body.pos |double[3] |m +dyn.body.vel |double[3] |m/s +dyn.body.acc |double[3] |m/s^2 +dyn.FORCE_INIT |double[3] |N +dyn.force |double[3] |N +dyn.body.angle_force |double[3] |rad +dyn.body.omegaDot |double[3] |rad/^s2 +dyn.body.omega |double[3] |rad*s^-1 +dyn.body.rotate |double[3] | diff --git a/trick_sims/SIM_singlerigidbody/RUN_test/input.py b/trick_sims/SIM_singlerigidbody/RUN_test/input.py new file mode 100644 index 000000000..b4e8e7395 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/RUN_test/input.py @@ -0,0 +1,81 @@ +################################################################################ +# _ ___ _ # +# / |___| _ ) ___ __| |_ _ # +# | |___| _ \/ _ \/ _` | || | # +# |_| |___/\___/\__,_|\_, | # +# __ ___ ___ __|__/ # +# / / ___| \ / _ \| __| # +# / _ \___| |) | (_) | _| # +# \___/ |___/ \___/|_| # +# # +# This input creates a simple body with 6 DOF: # +# -Creates 1 body # +# -Initializes 6 DOF # +################################################################################ + +# ============================================================================ - +# This file is used to store several quality of life python functions. +# ============================================================================ - +exec(open("Modified_data/state_data.dr").read()) +exec(open("Modified_data/realtime.py").read()) + +################################################################################ +# dyn DATA # +# (NOTE: dyn is our instance of BodySimObject) # +# This builds our objects, and defines their physical properties. # +################################################################################ + +# ============================================================================ - +# Establish the physical properties of the body...CONSTANTS! +# ============================================================================ - +dyn.body.mass = 20.0 +dyn.body.radius = 2.0 + +# ============================================================================ - +# Initialize system +# ============================================================================ - +M_PI = 3.141592653589793238460 + +#dyn.body.POS_INIT[0] = 0.0 +#dyn.body.POS_INIT[1] = 0.0 +#dyn.body.POS_INIT[2] = 0.0 + +#dyn.body.ANGLE_INIT[0] = 0.0 +#dyn.body.ANGLE_INIT[1] = 0.0 +#dyn.body.ANGLE_INIT[2] = 0.0 + +#dyn.body.OMEGA_INIT[0] = 0.0 +#dyn.body.OMEGA_INIT[1] = 0.0 +#dyn.body.OMEGA_INIT[2] = 0.0 + +#dyn.body.FORCE_INIT[0] = 0.0 +#dyn.body.FORCE_INIT[1] = 0.0 +#dyn.body.FORCE_INIT[2] = 10.0 + +#dyn.body.TORQUE_INIT[0] = 0.0 +#dyn.body.TORQUE_INIT[1] = 0.0 +#dyn.body.TORQUE_INIT[2] = 0.0 + +#dyn.body.VEL_INIT[0] = 0.0 +#dyn.body.VEL_INIT[1] = 0.0 +#dyn.body.VEL_INIT[2] = 0.0 + +#dyn.body.POS_FORCE[0] = 2.0 +#dyn.body.POS_FORCE[1] = 0.0 +#dyn.body.POS_FORCE[2] = 0.0 + +################################################################################ +# SIMULATION SET UP # +# This is where we set up the remaining inputs to create a working sim. # +################################################################################ + +# ============================================================================ - +# getintegrator(integration method, number of variables to be integrated) +# This sets up the integration scheme we use to analyze this system. +# ============================================================================ - +dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 12) + +# ============================================================================ - +# This tells the sim to stop after a few seconds +# ============================================================================ - +trick.stop(10.0) diff --git a/trick_sims/SIM_singlerigidbody/S_define b/trick_sims/SIM_singlerigidbody/S_define new file mode 100644 index 000000000..f14082c52 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/S_define @@ -0,0 +1,30 @@ +/************************TRICK HEADER************************* +PURPOSE: + ( Single body rigid dynamics simulation ) +LIBRARY DEPENDENCIES: + ((src/body.cpp) + ) +*************************************************************/ +#define TRICK_NO_MONTE_CARLO +#define TRICK_NO_MASTERSLAVE +#define TRICK_NO_INSTRUMENTATION +#define TRICK_NO_REALTIMEINJECTOR +#define TRICK_NO_ZEROCONF + +#include "sim_objects/default_trick_sys.sm" +##include "include/body.hh" +class BodySimObject : public Trick::SimObject { + public: + BODY body; + + BodySimObject() { + ("default_data") body.default_data() ; + ("initialization") body.init() ; + ("derivative") body.derivative() ; + ("integration") trick_ret = body.integ() ; + } +}; + +BodySimObject dyn; +IntegLoop dyn_integloop(0.01) dyn; + diff --git a/trick_sims/SIM_singlerigidbody/S_overrides.mk b/trick_sims/SIM_singlerigidbody/S_overrides.mk new file mode 100644 index 000000000..e1f6cccd6 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/S_overrides.mk @@ -0,0 +1,2 @@ +TRICK_CFLAGS += -Imodels +TRICK_CXXFLAGS += -Imodels diff --git a/trick_sims/SIM_singlerigidbody/models/include/body.hh b/trick_sims/SIM_singlerigidbody/models/include/body.hh new file mode 100644 index 000000000..bb47672f1 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/include/body.hh @@ -0,0 +1,75 @@ +/********************************************************************* +PURPOSE: (Simulate a single rigid body with six degrees of freedom) +LIBRARY DEPENDENCIES: + ((SingleRigidBody/src/body.o)) +*********************************************************************/ +#ifndef BODY_HH +#define BODY_HH + +class BODY { +public: + BODY(); + ~BODY(); + //Variables + + //Initializes state variables + double POS_INIT[3]; + double VEL_INIT[3]; + double ANGLE_INIT[3]; + double OMEGA_INIT[3]; + + //State variables + double pos[3]; + double vel[3]; + double angle[3]; + double omega[3]; + + double acc[3]; + double omegaDot[3]; + + double force[3]; + double FORCE_INIT[3]; + double force_remain[3]; + double POS_FORCE[3]; + + double torque[3]; + double TORQUE_INIT[3]; + double torque_remain[3]; + + double inertia; + double inertia_matrix[3][3]; + + double radius; + double mass; + double mat_mass[6][6]; + double massmatrix[3][3]; + + double CM[3]; + double CM_skew[3][3]; + double m_CM_skew[3][3]; + double neg_m_CM_skew[3][3]; + + double vec_a[6]; + double vec_b[6]; + + double rotate[3][3]; + double angle_force[3]; + + + // Methods + void default_data(); + void init(); + void derivative(); + int integ(); + + void mass_matrix(); + void rotation_matrix(); + void calcforce(); + void calctorque(); + void calcforce_remain(); + void calctorque_remain(); + void eq_setup(); + void eq_solver(); +}; + +#endif diff --git a/trick_sims/SIM_singlerigidbody/models/src/body.cpp b/trick_sims/SIM_singlerigidbody/models/src/body.cpp new file mode 100644 index 000000000..e51170f25 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/src/body.cpp @@ -0,0 +1,353 @@ +/************************************************************************** +PURPOSE: (Test trick macros (matrix and vector) as well as trick functions + including euler_matrix, deuler_123, and dLU_Choleski. Perform a + single body motion with six degrees of freedom) +LIBRARY DEPENDENCIES: + ((src/body.o)) +**************************************************************************/ + +#include + +#include "trick/integrator_c_intf.h" +#include "trick/trick_math_proto.h" +#include "trick/trick_math_error.h" +#include "trick/reference_frame.h" +#include "trick/vector_macros.h" +#include "trick/matrix_macros.h" + +#include "../include/body.hh" + +BODY::BODY(){}; +BODY::~BODY(){}; + +/************************************************************************* +FUNCTION: SingleRigidBody::default_data() +PURPOSE:` (Creates an object) +*************************************************************************/ + +void BODY::default_data() { + + //Initializing vectors and matricies to zero. + + for(int i = 0; i<6; i++) + vec_a[i] = 0.0; + + + for(int i = 0; i<6; i++) + vec_b[i] = 0.0; + + + for(int i = 0; i<6; i++) + for(int j = 0; j<6; j++) + mat_mass[i][j] = 0.0; + V_INIT(pos); + V_INIT(vel); + V_INIT(acc); + V_INIT(force); + V_INIT(force_remain); + V_INIT(torque); + V_INIT(torque_remain); + V_INIT(angle); + V_INIT(omega); + V_INIT(omegaDot); + V_INIT(angle_force); + + M_INIT(CM_skew); + M_INIT(m_CM_skew); + M_INIT(massmatrix); + M_INIT(rotate); + + + // Inputs + mass = 20.0; + radius = 2.0; + + POS_INIT[0] = 0.0; + POS_INIT[1] = 0.0; + POS_INIT[2] = 0.0; + + ANGLE_INIT[0] = 0.0; + ANGLE_INIT[1] = 0.0; + ANGLE_INIT[2] = 0.0; + + OMEGA_INIT[0] = 0.0; + OMEGA_INIT[1] = 0.0; + OMEGA_INIT[2] = 0.0; + + FORCE_INIT[0] = 0.0; + FORCE_INIT[1] = 0.0; + FORCE_INIT[2] = 10.0; + + VEL_INIT[0] = 0.0; + VEL_INIT[1] = 0.0; + VEL_INIT[2] = 0.0; + + POS_FORCE[0] = 2.0; + POS_FORCE[1] = 0.0; + POS_FORCE[2] = 0.0; + +}; + +/************************************************************************ +FUNCTION: SingleRigidBody::init() +PURPOSE: (Initializing state variables, creating inertia and CoM skew + matrices) +************************************************************************/ + +void BODY::init() { + + V_COPY(pos, POS_INIT); + V_COPY(vel, VEL_INIT); + V_COPY(angle, ANGLE_INIT); + V_COPY(omega, OMEGA_INIT); + + // Center of mass skew matrix + V_INIT(CM); + + V_SKEW(CM_skew, CM); + + MxSCALAR(m_CM_skew, CM_skew, mass); + MxSCALAR(neg_m_CM_skew, m_CM_skew, -1.0); + + // Inertia matrix + inertia = (2.0/5.0) * mass * radius * radius; + + for(int i = 0; i<1; i++) + for(int j = 0; j<1; j++) + inertia_matrix[i][j] = inertia; + + for(int i = 1; i<2; i++) + for(int j = 1; j<2; j++) + inertia_matrix[i][j] = inertia; + + for(int i = 2; i<3; i++) + for(int j = 2; j<3; j++) + inertia_matrix[i][j] = inertia; + +}; + +/****************************************************************************** +FUNCTION: BODY::mass_matrix() +PURPOSE: (Calculates 6x6 mass matrix M for eq M*a + r = b) +******************************************************************************/ +void BODY::mass_matrix(){ + + // Creates mass matrix for mat_mass() + for(int i = 0; i<1; i++) + for(int j = 0; j<1; j++) + massmatrix[i][j] = mass; + + for(int i = 1; i<2; i++) + for(int j = 1; j<2; j++) + massmatrix[i][j] = mass; + + for(int i = 2; i<3; i++) + for(int j = 2; j<3; j++) + massmatrix[i][j] = mass; + + + // Combines inertia, center of mass, and mass matrix into a 6x6 matrix + for(int i = 0; i<3; i++) + for(int j = 0; j<3; j++) + mat_mass[i][j] = massmatrix[i][j]; + + for(int i = 0; i<3; i++) + for(int j = 3; j<6; j++) + mat_mass[i][j] = neg_m_CM_skew[i][j-3]; + + for(int i = 3; i<6; i++) + for(int j = 0; j<3; j++) + mat_mass[i][j] = m_CM_skew[i-3][j]; + + for(int i = 3; i<6; i++) + for(int j = 3; j<6; j++) + mat_mass[i][j] = inertia_matrix[i-3][j-3]; + +}; + +/***************************************************************************** +FUNCTION: BODY::rotation_matrix() +PURPOSE: (Calculates transformation matrix from provided angles) +*****************************************************************************/ +void BODY::rotation_matrix() { + + // euler_matrix outputs the rotate matrix from angle + euler_matrix(angle, rotate, 0, Roll_Pitch_Yaw); + +}; + +/****************************************************************************** +FUNCTION: BODY::calcforce() +PURPOSE: (Calculates force wrt inertial frame) +******************************************************************************/ +void BODY::calcforce() { + + MxV(force, rotate, FORCE_INIT); + +}; + +/***************************************************************************** +FUNCTION: BODY::calctorque() +PURPOSE: (Calculates torque wrt inertial frame) +*****************************************************************************/ +void BODY::calctorque() { + + double torque_force[3]; + + V_CROSS(torque_force, POS_FORCE, FORCE_INIT); + MxV(torque, rotate, torque_force); + +}; + +/**************************************************************************** +FUNCTION: BODY::calcforce_remain() +PURPOSE: (Calculate remaining force wrt inertial frame) +****************************************************************************/ +void BODY::calcforce_remain() { + + double cross1[3]; + double cross2[3]; + + V_CROSS(cross1, omega, CM); + V_CROSS(cross2, omega, cross1); + V_SCALE(force_remain, cross2, mass); + +}; + + +/*************************************************************************** +FUNCTION: BODY::calctorque_remain() +PURPOSE: (Calculate remaining torque wrt inertial frame) +***************************************************************************/ +void BODY::calctorque_remain() { + + double I_w[3]; + + MxV(I_w, inertia_matrix, omega); + V_CROSS(torque_remain, omega, I_w); + + +}; + +/*************************************************************************** +FUNCTION: BODY::eq_setup() +PURPOSE: (Establishes b column vector for final eq M*a=b) +***************************************************************************/ +void BODY::eq_setup() { + + double remainder_force[3]; + double remainder_torque[3]; + + // Subtracts remaining from force & torque to get vec_b. + V_SUB(remainder_force, force, force_remain); + V_SUB(remainder_torque, torque, torque_remain); + + for(int i = 0; i<3; i++){ + vec_b[i] = remainder_force[i]; + } + + for(int i = 3; i<6; i++){ + vec_b[i] = remainder_torque[i-3]; + } + +}; + +/************************************************************************** +FUNCTION: BODY::eq_solver() +PURPOSE: (Performs choleski decomposition and computes linear and angular + accelerations) +**************************************************************************/ + +void BODY::eq_solver() { + + // Solving a = b * M^-1 + + // Temporary vector for Choleski + double tmp_vec[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + + // Dynamic memory set up + double **mat_mass_dyn; + double **mat_L; + mat_L = new double*[6]; + mat_mass_dyn = new double*[6]; + + for(int i = 0; i<6; i++) + { + mat_mass_dyn[i] = mat_mass[i]; + mat_L[i] = new double[6]; + } + + + dLU_Choleski(mat_mass_dyn, mat_L, tmp_vec, 6, vec_b, vec_a, 0); + + // Acceleration output + for(int i = 0; i<3; i++) + acc[i] = vec_a[i]; + + // Angular accleration output + for(int i = 0; i<3; i++) + omegaDot[i] = vec_a[i + 3]; + + // Delete dynamic memory + delete[] mat_mass_dyn; + delete[] mat_L; + +}; + +/*************************************************************************** +FUNCTION: BODY::derivative() +PURPOSE: (Calls all functions in desired order for calculations) +***************************************************************************/ +void BODY::derivative() { + + mass_matrix(); + rotation_matrix(); + calcforce(); + calctorque(); + calcforce_remain(); + calctorque_remain(); + eq_setup(); + eq_solver(); + +}; + +/*************************************************************************** +FUNCTION: BODY::integrate() +PURPOSE: (Sets up trick integration) +***************************************************************************/ + +#ifndef IN_MAKE +int BODY::integ() { + + int integration_step; + + load_state( + &pos[0], &pos[1], &pos[2], + &vel[0], &vel[1], &vel[2], + &angle[0], &angle[1], &angle[2], + &omega[0], &omega[1], &omega[2], + + NULL); + + load_deriv( + &vel[0], &vel[1], &vel[2], + &acc[0], &acc[1], &acc[2], + &omega[0], &omega[1], &omega[2], + &omegaDot[0], &omegaDot[1], &omegaDot[2], + + NULL); + + integration_step = integrate(); + + unload_state( + &pos[0], &pos[1], &pos[2], + &vel[0], &vel[1], &vel[2], + &angle[0], &angle[1], &angle[2], + &omega[0], &omega[1], &omega[2], + + NULL); + + return(integration_step); + +}; +#endif diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py b/trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py new file mode 100644 index 000000000..0aa0fcc84 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py @@ -0,0 +1,51 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) +import sys +import os +sys.path.append(os.getcwd() + "/trick.zip/trick") + +import _sim_services +from sim_services import * + +# create "all_cvars" to hold all global/static vars +all_cvars = new_cvar_list() +combine_cvars(all_cvars, cvar) +cvar = None + +# /users/bnwalla1/SingleRigidBody/include/body.hh +import _me18dda184e7a3a5300b5efa2b558f756 +combine_cvars(all_cvars, cvar) +cvar = None + +# /users/bnwalla1/SingleRigidBody/sims/S_source.hh +import _m2ddd17f9284f93dc40b8a127bd142ae5 +combine_cvars(all_cvars, cvar) +cvar = None + +# /users/bnwalla1/SingleRigidBody/include/body.hh +from me18dda184e7a3a5300b5efa2b558f756 import * +# /users/bnwalla1/SingleRigidBody/sims/S_source.hh +from m2ddd17f9284f93dc40b8a127bd142ae5 import * + +# S_source.hh +import _m2ddd17f9284f93dc40b8a127bd142ae5 +from m2ddd17f9284f93dc40b8a127bd142ae5 import * + +import _top +import top + +import _swig_double +import swig_double + +import _swig_int +import swig_int + +import _swig_ref +import swig_ref + +from shortcuts import * + +from exception import * + +cvar = all_cvars + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/exception.py b/trick_sims/SIM_singlerigidbody/sims/.trick/exception.py new file mode 100644 index 000000000..d3d55c9dd --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/exception.py @@ -0,0 +1,33 @@ + +""" +Overrides the default exception handler with our own. +This exception handler filters out lines in the stack trace that are in SWIG auto generated files +""" + +import sys +import trick +import traceback + +def noswig_excepthook(exctype, value, tb): + # autogen_dir holds the autogenerated directory in the simulation + autogen_dir = trick.command_line_args_get_default_dir() + "/trick" + # stack_trace contains the traceback information as a list of tuples. + # The tuples hold the (file_name, line, function name, text) + stack_trace = traceback.extract_tb(tb) + # Interate through the traceback stopping at the first line where + # the file_name resides in the generated directory + ii = 0 + for item in stack_trace: + if item[0].startswith(autogen_dir): + break + ii += 1 + # print the traceback up to the point where the auto generated code starts + traceback.print_exception(exctype, value, tb, ii) + +# set the exception handler to ours. +sys.excepthook = noswig_excepthook + +# This function can be called to restore the default exception hook. +def set_default_excepthook(): + sys.excepthook = sys.__excepthook__ + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py b/trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py new file mode 100644 index 000000000..af618f8c7 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py @@ -0,0 +1,1213 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.12 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_m2ddd17f9284f93dc40b8a127bd142ae5')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_m2ddd17f9284f93dc40b8a127bd142ae5') + _m2ddd17f9284f93dc40b8a127bd142ae5 = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_m2ddd17f9284f93dc40b8a127bd142ae5', [dirname(__file__)]) + except ImportError: + import _m2ddd17f9284f93dc40b8a127bd142ae5 + return _m2ddd17f9284f93dc40b8a127bd142ae5 + try: + _mod = imp.load_module('_m2ddd17f9284f93dc40b8a127bd142ae5', fp, pathname, description) + finally: + if fp is not None: + fp.close() + return _mod + _m2ddd17f9284f93dc40b8a127bd142ae5 = swig_import_helper() + del swig_import_helper +else: + import _m2ddd17f9284f93dc40b8a127bd142ae5 +del _swig_python_version_info + +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr(self, class_type, name): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except __builtin__.Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except __builtin__.Exception: + class _object: + pass + _newclass = 0 + +class SwigPyIterator(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SwigPyIterator + __del__ = lambda self: None + + def value(self): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_value(self) + + def incr(self, n=1): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_incr(self, n) + + def decr(self, n=1): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_decr(self, n) + + def distance(self, x): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_distance(self, x) + + def equal(self, x): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_equal(self, x) + + def copy(self): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_copy(self) + + def next(self): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_next(self) + + def __next__(self): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___next__(self) + + def previous(self): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_previous(self) + + def advance(self, n): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_advance(self, n) + + def __eq__(self, x): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___eq__(self, x) + + def __ne__(self, x): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___ne__(self, x) + + def __iadd__(self, n): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___iadd__(self, n) + + def __isub__(self, n): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___isub__(self, n) + + def __add__(self, n): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___add__(self, n) + + def __sub__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___sub__(self, *args) + def __iter__(self): + return self +SwigPyIterator_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_swigregister +SwigPyIterator_swigregister(SwigPyIterator) + + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + all_keys = [attr for attr in dir(class_type) if not attr.startswith('__')and attr != '_s' ] + data_keys = sorted(class_type.__swig_setmethods__.keys()) + method_keys = [ x for x in all_keys if x not in data_keys ] + raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % + (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) + +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): +# this line is changed to handle older swigs that used PySwigObject instead of the current SwigPyObject + if type(value).__name__ == 'SwigPyObject' or type(value).__name__ == 'PySwigObject' : + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + all_keys = [attr for attr in dir(class_type) if not attr.startswith('__') and attr != '_s' ] + data_keys = sorted(class_type.__swig_setmethods__.keys()) + method_keys = [ x for x in all_keys if x not in data_keys ] + raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % + (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,1) + +import sim_services +import me18dda184e7a3a5300b5efa2b558f756 +class SimEnvironment(sim_services.Environment): + __swig_setmethods__ = {} + for _s in [sim_services.Environment]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, SimEnvironment, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.Environment]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, SimEnvironment, name) + __repr__ = _swig_repr + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_SimEnvironment() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "SimEnvironment", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SimEnvironment___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SimEnvironment___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SimEnvironment + __del__ = lambda self: None +SimEnvironment_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SimEnvironment_swigregister +SimEnvironment_swigregister(SimEnvironment) + + +def exec_collect_init(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.exec_collect_init(*args) +exec_collect_init = _m2ddd17f9284f93dc40b8a127bd142ae5.exec_collect_init +class SysSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, SysSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, SysSimObject, name) + __repr__ = _swig_repr + __swig_getmethods__["sched"] = _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_sched_get + if _newclass: + sched = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_sched_get) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_SysSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "SysSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SysSimObject + __del__ = lambda self: None +SysSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_swigregister +SysSimObject_swigregister(SysSimObject) + +class MemoryManagerSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MemoryManagerSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MemoryManagerSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["mm"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_set + __swig_getmethods__["mm"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_get + if _newclass: + mm = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_MemoryManagerSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "MemoryManagerSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_MemoryManagerSimObject + __del__ = lambda self: None +MemoryManagerSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_swigregister +MemoryManagerSimObject_swigregister(MemoryManagerSimObject) + +class CheckPointRestartSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, CheckPointRestartSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, CheckPointRestartSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["cpr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_set + __swig_getmethods__["cpr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_get + if _newclass: + cpr = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_get, _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_CheckPointRestartSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "CheckPointRestartSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_CheckPointRestartSimObject + __del__ = lambda self: None +CheckPointRestartSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_swigregister +CheckPointRestartSimObject_swigregister(CheckPointRestartSimObject) + +class SieSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, SieSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, SieSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["sie"] = _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_set + __swig_getmethods__["sie"] = _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_get + if _newclass: + sie = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_get, _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_SieSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "SieSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SieSimObject + __del__ = lambda self: None +SieSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_swigregister +SieSimObject_swigregister(SieSimObject) + +class CommandLineArgumentsSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, CommandLineArgumentsSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, CommandLineArgumentsSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["cmd_args"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_set + __swig_getmethods__["cmd_args"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_get + if _newclass: + cmd_args = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_get, _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_CommandLineArgumentsSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "CommandLineArgumentsSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_CommandLineArgumentsSimObject + __del__ = lambda self: None +CommandLineArgumentsSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_swigregister +CommandLineArgumentsSimObject_swigregister(CommandLineArgumentsSimObject) + +class MessageSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["mpublisher"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_set + __swig_getmethods__["mpublisher"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_get + if _newclass: + mpublisher = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_set) + __swig_setmethods__["mcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_set + __swig_getmethods__["mcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_get + if _newclass: + mcout = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_set) + __swig_setmethods__["mtcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_set + __swig_getmethods__["mtcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_get + if _newclass: + mtcout = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_set) + __swig_getmethods__["mfile"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mfile_get + if _newclass: + mfile = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mfile_get) + __swig_setmethods__["mdevice"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_set + __swig_getmethods__["mdevice"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_get + if _newclass: + mdevice = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_set) + __swig_getmethods__["pfile"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_pfile_get + if _newclass: + pfile = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_pfile_get) + __swig_setmethods__["message_file_manager"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_set + __swig_getmethods__["message_file_manager"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_get + if _newclass: + message_file_manager = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_MessageSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "MessageSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_call_function_double(self, *args) + + def separate_thread_set_enabled(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_separate_thread_set_enabled(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_MessageSimObject + __del__ = lambda self: None +MessageSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_swigregister +MessageSimObject_swigregister(MessageSimObject) + +class JITSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, JITSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, JITSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["jit"] = _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_set + __swig_getmethods__["jit"] = _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_get + if _newclass: + jit = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_get, _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_JITSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "JITSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_JITSimObject + __del__ = lambda self: None +JITSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_swigregister +JITSimObject_swigregister(JITSimObject) + +class InputProcessorSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, InputProcessorSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, InputProcessorSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["ip"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_set + __swig_getmethods__["ip"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_get + if _newclass: + ip = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_get, _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_set) + __swig_setmethods__["mtv"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_set + __swig_getmethods__["mtv"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_get + if _newclass: + mtv = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_get, _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_set) + __swig_setmethods__["units_map_ptr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_set + __swig_getmethods__["units_map_ptr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_get + if _newclass: + units_map_ptr = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_get, _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_InputProcessorSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "InputProcessorSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_InputProcessorSimObject + __del__ = lambda self: None + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject___len__(self, *args) +InputProcessorSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_swigregister +InputProcessorSimObject_swigregister(InputProcessorSimObject) + +class ThreadProcessEventSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadProcessEventSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ThreadProcessEventSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_set + __swig_getmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_get + if _newclass: + ep = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_get, _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_set) + + def __init__(self, *args, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_ThreadProcessEventSimObject(*args) + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + this.own(0) + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "ThreadProcessEventSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_ThreadProcessEventSimObject + __del__ = lambda self: None +ThreadProcessEventSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_swigregister +ThreadProcessEventSimObject_swigregister(ThreadProcessEventSimObject) + +class EventManagerSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, EventManagerSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, EventManagerSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["em"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_set + __swig_getmethods__["em"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_get + if _newclass: + em = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_set) + __swig_setmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_set + __swig_getmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_get + if _newclass: + ep = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_set) + __swig_setmethods__["thread_process_event_so"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_set + __swig_getmethods__["thread_process_event_so"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_get + if _newclass: + thread_process_event_so = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_set) + __swig_setmethods__["thread_process_event_so_names"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_set + __swig_getmethods__["thread_process_event_so_names"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_get + if _newclass: + thread_process_event_so_names = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_set) + + def create_thread_process_event(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_create_thread_process_event(self, *args) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_EventManagerSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "EventManagerSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_EventManagerSimObject + __del__ = lambda self: None + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject___len__(self, *args) +EventManagerSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_swigregister +EventManagerSimObject_swigregister(EventManagerSimObject) + +class VariableServerSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, VariableServerSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["vs"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_set + __swig_getmethods__["vs"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_get + if _newclass: + vs = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_get, _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_set) + __swig_getmethods__["sim_control_panel"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_sim_control_panel_get + if _newclass: + sim_control_panel = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_sim_control_panel_get) + __swig_getmethods__["trick_view"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_trick_view_get + if _newclass: + trick_view = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_trick_view_get) + __swig_getmethods__["malfunctions_trick_view"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_malfunctions_trick_view_get + if _newclass: + malfunctions_trick_view = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_malfunctions_trick_view_get) + __swig_getmethods__["stripchart"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_stripchart_get + if _newclass: + stripchart = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_stripchart_get) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_VariableServerSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "VariableServerSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_VariableServerSimObject + __del__ = lambda self: None +VariableServerSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_swigregister +VariableServerSimObject_swigregister(VariableServerSimObject) + +class DataRecordDispatcherSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordDispatcherSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, DataRecordDispatcherSimObject, name) + __repr__ = _swig_repr + __swig_getmethods__["drd"] = _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_drd_get + if _newclass: + drd = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_drd_get) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_DataRecordDispatcherSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "DataRecordDispatcherSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_DataRecordDispatcherSimObject + __del__ = lambda self: None +DataRecordDispatcherSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_swigregister +DataRecordDispatcherSimObject_swigregister(DataRecordDispatcherSimObject) + +class RTSyncSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RTSyncSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RTSyncSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["gtod_clock"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_set + __swig_getmethods__["gtod_clock"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_get + if _newclass: + gtod_clock = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_get, _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_set) + __swig_setmethods__["itimer"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_set + __swig_getmethods__["itimer"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_get + if _newclass: + itimer = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_get, _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_set) + __swig_setmethods__["rt_sync"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_set + __swig_getmethods__["rt_sync"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_get + if _newclass: + rt_sync = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_get, _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_RTSyncSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "RTSyncSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_RTSyncSimObject + __del__ = lambda self: None +RTSyncSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_swigregister +RTSyncSimObject_swigregister(RTSyncSimObject) + +class FrameLogSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, FrameLogSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, FrameLogSimObject, name) + __repr__ = _swig_repr + __swig_getmethods__["frame_log"] = _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_frame_log_get + if _newclass: + frame_log = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_frame_log_get) + + def __init__(self, *args, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_FrameLogSimObject(*args) + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + this.own(0) + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "FrameLogSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_FrameLogSimObject + __del__ = lambda self: None +FrameLogSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_swigregister +FrameLogSimObject_swigregister(FrameLogSimObject) + +class UnitTestSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, UnitTestSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, UnitTestSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["unit_tests"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_set + __swig_getmethods__["unit_tests"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_get + if _newclass: + unit_tests = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_get, _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_UnitTestSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "UnitTestSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_UnitTestSimObject + __del__ = lambda self: None +UnitTestSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_swigregister +UnitTestSimObject_swigregister(UnitTestSimObject) + +class UdUnitsSimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, UdUnitsSimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, UdUnitsSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["udunits"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_set + __swig_getmethods__["udunits"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_get + if _newclass: + udunits = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_get, _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_UdUnitsSimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "UdUnitsSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_UdUnitsSimObject + __del__ = lambda self: None +UdUnitsSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_swigregister +UdUnitsSimObject_swigregister(UdUnitsSimObject) + +class BodySimObject(sim_services.SimObject): + __swig_setmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, BodySimObject, name, value) + __swig_getmethods__ = {} + for _s in [sim_services.SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, BodySimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["body"] = _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_set + __swig_getmethods__["body"] = _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_get + if _newclass: + body = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_get, _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_set) + + def __init__(self, **kwargs): + import _sim_services + this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_BodySimObject() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "BodySimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def call_function(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_call_function_double(self, *args) + + def __getitem__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject___getitem__(self, *args) + + def __len__(self, *args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject___len__(self, *args) + __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_BodySimObject + __del__ = lambda self: None +BodySimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_swigregister +BodySimObject_swigregister(BodySimObject) + + +def castAsSimEnvironment(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSimEnvironment(*args) +castAsSimEnvironment = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSimEnvironment + +def castAsSysSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSysSimObject(*args) +castAsSysSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSysSimObject + +def castAsMemoryManagerSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMemoryManagerSimObject(*args) +castAsMemoryManagerSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMemoryManagerSimObject + +def castAsCheckPointRestartSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCheckPointRestartSimObject(*args) +castAsCheckPointRestartSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCheckPointRestartSimObject + +def castAsSieSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSieSimObject(*args) +castAsSieSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSieSimObject + +def castAsCommandLineArgumentsSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCommandLineArgumentsSimObject(*args) +castAsCommandLineArgumentsSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCommandLineArgumentsSimObject + +def castAsMessageSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMessageSimObject(*args) +castAsMessageSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMessageSimObject + +def castAsJITSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsJITSimObject(*args) +castAsJITSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsJITSimObject + +def castAsInputProcessorSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsInputProcessorSimObject(*args) +castAsInputProcessorSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsInputProcessorSimObject + +def castAsThreadProcessEventSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsThreadProcessEventSimObject(*args) +castAsThreadProcessEventSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsThreadProcessEventSimObject + +def castAsEventManagerSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsEventManagerSimObject(*args) +castAsEventManagerSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsEventManagerSimObject + +def castAsVariableServerSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsVariableServerSimObject(*args) +castAsVariableServerSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsVariableServerSimObject + +def castAsDataRecordDispatcherSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsDataRecordDispatcherSimObject(*args) +castAsDataRecordDispatcherSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsDataRecordDispatcherSimObject + +def castAsRTSyncSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsRTSyncSimObject(*args) +castAsRTSyncSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsRTSyncSimObject + +def castAsFrameLogSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsFrameLogSimObject(*args) +castAsFrameLogSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsFrameLogSimObject + +def castAsUnitTestSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUnitTestSimObject(*args) +castAsUnitTestSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUnitTestSimObject + +def castAsUdUnitsSimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUdUnitsSimObject(*args) +castAsUdUnitsSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUdUnitsSimObject + +def castAsBodySimObject(*args): + return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsBodySimObject(*args) +castAsBodySimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsBodySimObject +# This file is compatible with both classic and new-style classes. + + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py b/trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py new file mode 100644 index 000000000..fb19ecc54 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py @@ -0,0 +1,395 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.12 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_me18dda184e7a3a5300b5efa2b558f756')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_me18dda184e7a3a5300b5efa2b558f756') + _me18dda184e7a3a5300b5efa2b558f756 = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_me18dda184e7a3a5300b5efa2b558f756', [dirname(__file__)]) + except ImportError: + import _me18dda184e7a3a5300b5efa2b558f756 + return _me18dda184e7a3a5300b5efa2b558f756 + try: + _mod = imp.load_module('_me18dda184e7a3a5300b5efa2b558f756', fp, pathname, description) + finally: + if fp is not None: + fp.close() + return _mod + _me18dda184e7a3a5300b5efa2b558f756 = swig_import_helper() + del swig_import_helper +else: + import _me18dda184e7a3a5300b5efa2b558f756 +del _swig_python_version_info + +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr(self, class_type, name): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except __builtin__.Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except __builtin__.Exception: + class _object: + pass + _newclass = 0 + +class SwigPyIterator(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _me18dda184e7a3a5300b5efa2b558f756.delete_SwigPyIterator + __del__ = lambda self: None + + def value(self): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_value(self) + + def incr(self, n=1): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_incr(self, n) + + def decr(self, n=1): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_decr(self, n) + + def distance(self, x): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_distance(self, x) + + def equal(self, x): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_equal(self, x) + + def copy(self): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_copy(self) + + def next(self): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_next(self) + + def __next__(self): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___next__(self) + + def previous(self): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_previous(self) + + def advance(self, n): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_advance(self, n) + + def __eq__(self, x): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___eq__(self, x) + + def __ne__(self, x): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___ne__(self, x) + + def __iadd__(self, n): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___iadd__(self, n) + + def __isub__(self, n): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___isub__(self, n) + + def __add__(self, n): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___add__(self, n) + + def __sub__(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___sub__(self, *args) + def __iter__(self): + return self +SwigPyIterator_swigregister = _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_swigregister +SwigPyIterator_swigregister(SwigPyIterator) + + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + all_keys = [attr for attr in dir(class_type) if not attr.startswith('__')and attr != '_s' ] + data_keys = sorted(class_type.__swig_setmethods__.keys()) + method_keys = [ x for x in all_keys if x not in data_keys ] + raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % + (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) + +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): +# this line is changed to handle older swigs that used PySwigObject instead of the current SwigPyObject + if type(value).__name__ == 'SwigPyObject' or type(value).__name__ == 'PySwigObject' : + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + all_keys = [attr for attr in dir(class_type) if not attr.startswith('__') and attr != '_s' ] + data_keys = sorted(class_type.__swig_setmethods__.keys()) + method_keys = [ x for x in all_keys if x not in data_keys ] + raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % + (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,1) + +class BODY(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, BODY, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, BODY, name) + __repr__ = _swig_repr + + def __init__(self, **kwargs): + import _sim_services + this = _me18dda184e7a3a5300b5efa2b558f756.new_BODY() + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "BODY", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + __swig_destroy__ = _me18dda184e7a3a5300b5efa2b558f756.delete_BODY + __del__ = lambda self: None + __swig_setmethods__["POS_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_set + __swig_getmethods__["POS_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_get + if _newclass: + POS_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_set) + __swig_setmethods__["VEL_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_set + __swig_getmethods__["VEL_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_get + if _newclass: + VEL_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_set) + __swig_setmethods__["ANGLE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_set + __swig_getmethods__["ANGLE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_get + if _newclass: + ANGLE_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_set) + __swig_setmethods__["OMEGA_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_set + __swig_getmethods__["OMEGA_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_get + if _newclass: + OMEGA_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_set) + __swig_setmethods__["pos"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_pos_set + __swig_getmethods__["pos"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_pos_get + if _newclass: + pos = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_pos_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_pos_set) + __swig_setmethods__["vel"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vel_set + __swig_getmethods__["vel"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vel_get + if _newclass: + vel = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_vel_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_vel_set) + __swig_setmethods__["angle"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_set + __swig_getmethods__["angle"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_get + if _newclass: + angle = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_angle_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_set) + __swig_setmethods__["omega"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omega_set + __swig_getmethods__["omega"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omega_get + if _newclass: + omega = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_omega_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_omega_set) + __swig_setmethods__["acc"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_acc_set + __swig_getmethods__["acc"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_acc_get + if _newclass: + acc = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_acc_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_acc_set) + __swig_setmethods__["omegaDot"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_set + __swig_getmethods__["omegaDot"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_get + if _newclass: + omegaDot = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_set) + __swig_setmethods__["force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_set + __swig_getmethods__["force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_get + if _newclass: + force = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_force_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_force_set) + __swig_setmethods__["FORCE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_set + __swig_getmethods__["FORCE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_get + if _newclass: + FORCE_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_set) + __swig_setmethods__["force_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_set + __swig_getmethods__["force_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_get + if _newclass: + force_remain = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_set) + __swig_setmethods__["POS_FORCE"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_set + __swig_getmethods__["POS_FORCE"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_get + if _newclass: + POS_FORCE = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_set) + __swig_setmethods__["torque"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_set + __swig_getmethods__["torque"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_get + if _newclass: + torque = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_torque_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_set) + __swig_setmethods__["TORQUE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_set + __swig_getmethods__["TORQUE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_get + if _newclass: + TORQUE_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_set) + __swig_setmethods__["torque_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_set + __swig_getmethods__["torque_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_get + if _newclass: + torque_remain = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_set) + __swig_setmethods__["inertia"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_set + __swig_getmethods__["inertia"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_get + if _newclass: + inertia = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_set) + __swig_setmethods__["inertia_matrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_set + __swig_getmethods__["inertia_matrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_get + if _newclass: + inertia_matrix = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_set) + __swig_setmethods__["radius"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_radius_set + __swig_getmethods__["radius"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_radius_get + if _newclass: + radius = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_radius_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_radius_set) + __swig_setmethods__["mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_set + __swig_getmethods__["mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_get + if _newclass: + mass = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_mass_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_set) + __swig_setmethods__["mat_mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_set + __swig_getmethods__["mat_mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_get + if _newclass: + mat_mass = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_set) + __swig_setmethods__["massmatrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_set + __swig_getmethods__["massmatrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_get + if _newclass: + massmatrix = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_set) + __swig_setmethods__["CM"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_set + __swig_getmethods__["CM"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_get + if _newclass: + CM = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_CM_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_set) + __swig_setmethods__["CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_set + __swig_getmethods__["CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_get + if _newclass: + CM_skew = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_set) + __swig_setmethods__["m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_set + __swig_getmethods__["m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_get + if _newclass: + m_CM_skew = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_set) + __swig_setmethods__["neg_m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_set + __swig_getmethods__["neg_m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_get + if _newclass: + neg_m_CM_skew = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_set) + __swig_setmethods__["vec_a"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_set + __swig_getmethods__["vec_a"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_get + if _newclass: + vec_a = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_set) + __swig_setmethods__["vec_b"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_set + __swig_getmethods__["vec_b"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_get + if _newclass: + vec_b = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_set) + __swig_setmethods__["rotate"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_set + __swig_getmethods__["rotate"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_get + if _newclass: + rotate = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_set) + __swig_setmethods__["angle_force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_set + __swig_getmethods__["angle_force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_get + if _newclass: + angle_force = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_set) + + def default_data(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_default_data(self, *args) + + def init(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_init(self, *args) + + def derivative(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_derivative(self, *args) + + def integ(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_integ(self, *args) + + def mass_matrix(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_matrix(self, *args) + + def rotation_matrix(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_rotation_matrix(self, *args) + + def calcforce(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_calcforce(self, *args) + + def calctorque(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_calctorque(self, *args) + + def calcforce_remain(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_calcforce_remain(self, *args) + + def calctorque_remain(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_calctorque_remain(self, *args) + + def eq_setup(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_eq_setup(self, *args) + + def eq_solver(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY_eq_solver(self, *args) + + def __getitem__(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY___getitem__(self, *args) + + def __len__(self, *args): + return _me18dda184e7a3a5300b5efa2b558f756.BODY___len__(self, *args) +BODY_swigregister = _me18dda184e7a3a5300b5efa2b558f756.BODY_swigregister +BODY_swigregister(BODY) + + +def castAsBODY(*args): + return _me18dda184e7a3a5300b5efa2b558f756.castAsBODY(*args) +castAsBODY = _me18dda184e7a3a5300b5efa2b558f756.castAsBODY +# This file is compatible with both classic and new-style classes. + + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py b/trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py new file mode 100644 index 000000000..7bd36f0d3 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py @@ -0,0 +1,138 @@ + +""" +Create shortcuts or aliases for difficult to remember Input File commands + +Then use "trick.shortcut_name()" in the input file to make your calls +""" + +import top +import sys +import trick + +# from the executive +if hasattr(top.cvar, 'trick_sys'): + stop = top.cvar.trick_sys.sched.stop + run = top.cvar.trick_sys.sched.run + freeze = top.cvar.trick_sys.sched.freeze + if hasattr(top.cvar.trick_sys.sched, 'add_range'): + # from monte carlo + mc_add_range = top.cvar.trick_sys.sched.add_range + +# from Monte Carlo +if hasattr(top.cvar, 'trick_mc'): + mc_add_variable = top.cvar.trick_mc.mc.add_variable + +# from the memory manager wrapper +if hasattr(top.cvar, 'trick_mm'): + read_checkpoint_from_string = top.cvar.trick_mm.mm.read_checkpoint_from_string + mm_declare_ext_var = top.cvar.trick_mm.mm.declare_extern_var + +# from message +if hasattr(top.cvar, 'trick_message'): + message_cpu_set = top.cvar.trick_message.mdevice.get_listen_thread().cpu_set + +# from checkpoint restart +if hasattr(top.cvar, 'trick_cpr'): + checkpoint = top.cvar.trick_cpr.cpr.checkpoint + load_checkpoint = top.cvar.trick_cpr.cpr.load_checkpoint + +# from the input processor +if hasattr(top.cvar, 'trick_ip'): + #set_event_info_msg_on = top.cvar.trick_ip.ip.set_event_info_msg_on + #set_event_info_msg_off = top.cvar.trick_ip.ip.set_event_info_msg_off + pass + +set_event_info_msg_on = trick.IPPythonEvent.set_event_info_msg_on +set_event_info_msg_off = trick.IPPythonEvent.set_event_info_msg_off +terminate_on_event_parse_error = trick.IPPythonEvent.terminate_on_event_parse_error + +# bind pyton input_processor event routines to shortcut names. +new_event = trick.ippython_new_event +add_event = trick.ippython_add_event +add_event_before = trick.ippython_add_event_before +add_event_after = trick.ippython_add_event_after +add_read = trick.ippython_add_read +delete_event = trick.ippython_delete_event +manual_on = trick.ippython_manual_on +manual_fire = trick.ippython_manual_fire +manual_off = trick.ippython_manual_off +manual_done = trick.ippython_manual_done + +# bind event manager name to shortcut names. +get_event = trick.event_manager_get_event +remove_event = trick.event_manager_remove_event + +if hasattr(top.cvar, 'trick_em'): + activate_event = top.cvar.trick_em.em.activate_event + deactivate_event = top.cvar.trick_em.em.deactivate_event + +# from real time +if hasattr(top.cvar, 'trick_real_time'): + itimer_enable = top.cvar.trick_real_time.itimer.enable + itimer_disable = top.cvar.trick_real_time.itimer.disable + +# from variable server / sim_control panel +if hasattr(top.cvar, 'trick_vs'): + set_var_server_enabled = top.cvar.trick_vs.vs.set_enabled + get_var_server_enabled = top.cvar.trick_vs.vs.get_enabled + set_var_server_info_msg_on = top.cvar.trick_vs.vs.set_var_server_info_msg_on + set_var_server_info_msg_off = top.cvar.trick_vs.vs.set_var_server_info_msg_off + set_var_server_log_on = top.cvar.trick_vs.vs.set_var_server_log_on + set_var_server_log_off = top.cvar.trick_vs.vs.set_var_server_log_off + var_server_cpu_set = top.cvar.trick_vs.vs.get_listen_thread().cpu_set + + # Send all output to stdout/stderr through var_write_stdio. + class VarWriteStdio: + def __init__(self, in_stream): + self.stream = in_stream + def write(self, text): + trick.var_write_stdio(self.stream.fileno() , text) + def flush(self): + self.stream.flush() + sys.stdout = VarWriteStdio(sys.stdout) + sys.stderr = VarWriteStdio(sys.stderr) + +# from real time injector +if hasattr(top.cvar, 'trick_inject'): + rti_set_debug = top.cvar.trick_inject.rtis.SetDebug + rti_set_frame_multiple = top.cvar.trick_inject.rtis.SetFrameMultiple + rti_set_frame_offset = top.cvar.trick_inject.rtis.SetFrameOffset + rti_add = top.cvar.trick_inject.rtis.Add + rti_fire = top.cvar.trick_inject.rtis.Fire + rti_list = top.cvar.trick_inject.rtis.List + +# from data_recording +if hasattr(top.cvar, 'trick_data_record'): + drd_writer_thread = top.cvar.trick_data_record.drd.drd_writer_thread + data_record_cpu_set = top.cvar.trick_data_record.drd.drd_writer_thread.cpu_set + +# This routine will look up the reference name through ref_attributes. +# ref_to_value retrieves the value and places it into a V_DATA structure +# The return statement is an anonymous dictionary lookup that returns +# the value based on the type in val. The 6 argument is a default +# type to use +def var_get(name): + ref = trick.ref_attributes(name) + ref.thisown = True + val = trick.V_DATA() + trick.ref_to_value(ref, val) + return { + '1': trick.vval_char(val), + '2': trick.vval_char(val), + '3': trick.vval_string(val), + '4': trick.vval_short(val), + '5': trick.vval_short(val), + '6': trick.vval_int(val), + '7': trick.vval_int(val), + '8': trick.vval_long(val), + '9': trick.vval_long(val), + '10': trick.vval_float(val), + '11': trick.vval_double(val), + '14': trick.vval_longlong(val), + '15': trick.vval_longlong(val), + '16': trick.vval_filep(val), + '17': trick.vval_char(val), + '20': trick.vval_voidp(val), + '21': trick.vval_int(val) + }.get(str(val.type),6) + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py b/trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py new file mode 100644 index 000000000..ae60cf201 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py @@ -0,0 +1,13728 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.12 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_sim_services')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_sim_services') + _sim_services = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_sim_services', [dirname(__file__)]) + except ImportError: + import _sim_services + return _sim_services + try: + _mod = imp.load_module('_sim_services', fp, pathname, description) + finally: + if fp is not None: + fp.close() + return _mod + _sim_services = swig_import_helper() + del swig_import_helper +else: + import _sim_services +del _swig_python_version_info + +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr(self, class_type, name): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except __builtin__.Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except __builtin__.Exception: + class _object: + pass + _newclass = 0 + +class SwigPyIterator(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_SwigPyIterator + __del__ = lambda self: None + + def value(self): + return _sim_services.SwigPyIterator_value(self) + + def incr(self, n=1): + return _sim_services.SwigPyIterator_incr(self, n) + + def decr(self, n=1): + return _sim_services.SwigPyIterator_decr(self, n) + + def distance(self, x): + return _sim_services.SwigPyIterator_distance(self, x) + + def equal(self, x): + return _sim_services.SwigPyIterator_equal(self, x) + + def copy(self): + return _sim_services.SwigPyIterator_copy(self) + + def next(self): + return _sim_services.SwigPyIterator_next(self) + + def __next__(self): + return _sim_services.SwigPyIterator___next__(self) + + def previous(self): + return _sim_services.SwigPyIterator_previous(self) + + def advance(self, n): + return _sim_services.SwigPyIterator_advance(self, n) + + def __eq__(self, x): + return _sim_services.SwigPyIterator___eq__(self, x) + + def __ne__(self, x): + return _sim_services.SwigPyIterator___ne__(self, x) + + def __iadd__(self, n): + return _sim_services.SwigPyIterator___iadd__(self, n) + + def __isub__(self, n): + return _sim_services.SwigPyIterator___isub__(self, n) + + def __add__(self, n): + return _sim_services.SwigPyIterator___add__(self, n) + + def __sub__(self, *args): + return _sim_services.SwigPyIterator___sub__(self, *args) + def __iter__(self): + return self +SwigPyIterator_swigregister = _sim_services.SwigPyIterator_swigregister +SwigPyIterator_swigregister(SwigPyIterator) + + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + all_keys = [attr for attr in dir(class_type) if not attr.startswith('__')and attr != '_s' ] + data_keys = sorted(class_type.__swig_setmethods__.keys()) + method_keys = [ x for x in all_keys if x not in data_keys ] + raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % + (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) + +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): +# this line is changed to handle older swigs that used PySwigObject instead of the current SwigPyObject + if type(value).__name__ == 'SwigPyObject' or type(value).__name__ == 'PySwigObject' : + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + all_keys = [attr for attr in dir(class_type) if not attr.startswith('__') and attr != '_s' ] + data_keys = sorted(class_type.__swig_setmethods__.keys()) + method_keys = [ x for x in all_keys if x not in data_keys ] + raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % + (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,1) + +class swig_double(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, swig_double, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, swig_double, name) + __swig_setmethods__["value"] = _sim_services.swig_double_value_set + __swig_getmethods__["value"] = _sim_services.swig_double_value_get + if _newclass: + value = _swig_property(_sim_services.swig_double_value_get, _sim_services.swig_double_value_set) + __swig_setmethods__["units"] = _sim_services.swig_double_units_set + __swig_getmethods__["units"] = _sim_services.swig_double_units_get + if _newclass: + units = _swig_property(_sim_services.swig_double_units_get, _sim_services.swig_double_units_set) + __swig_setmethods__["str_output"] = _sim_services.swig_double_str_output_set + __swig_getmethods__["str_output"] = _sim_services.swig_double_str_output_get + if _newclass: + str_output = _swig_property(_sim_services.swig_double_str_output_get, _sim_services.swig_double_str_output_set) + + def __init__(self, *args): + this = _sim_services.new_swig_double(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def __str__(self, *args): + return _sim_services.swig_double___str__(self, *args) + + def __repr__(self, *args): + return _sim_services.swig_double___repr__(self, *args) + + def __add__(self, *args): + return _sim_services.swig_double___add__(self, *args) + + def __sub__(self, *args): + return _sim_services.swig_double___sub__(self, *args) + + def __mul__(self, *args): + return _sim_services.swig_double___mul__(self, *args) + + def __div__(self, *args): + return _sim_services.swig_double___div__(self, *args) + + def __truediv__(self, *args): + return _sim_services.swig_double___truediv__(self, *args) + + def __floordiv__(self, *args): + return _sim_services.swig_double___floordiv__(self, *args) + + def __mod__(self, *args): + return _sim_services.swig_double___mod__(self, *args) + + def __pow__(self, *args): + return _sim_services.swig_double___pow__(self, *args) + + def __radd__(self, *args): + return _sim_services.swig_double___radd__(self, *args) + + def __rsub__(self, *args): + return _sim_services.swig_double___rsub__(self, *args) + + def __rmul__(self, *args): + return _sim_services.swig_double___rmul__(self, *args) + + def __rdiv__(self, *args): + return _sim_services.swig_double___rdiv__(self, *args) + + def __rtruediv__(self, *args): + return _sim_services.swig_double___rtruediv__(self, *args) + + def __rfloordiv__(self, *args): + return _sim_services.swig_double___rfloordiv__(self, *args) + + def __rmod__(self, *args): + return _sim_services.swig_double___rmod__(self, *args) + + def __rpow__(self, *args): + return _sim_services.swig_double___rpow__(self, *args) + + def __iadd__(self, *args): + return _sim_services.swig_double___iadd__(self, *args) + + def __isub__(self, *args): + return _sim_services.swig_double___isub__(self, *args) + + def __imul__(self, *args): + return _sim_services.swig_double___imul__(self, *args) + + def __idiv__(self, *args): + return _sim_services.swig_double___idiv__(self, *args) + + def __itruediv__(self, *args): + return _sim_services.swig_double___itruediv__(self, *args) + + def __ifloordiv__(self, *args): + return _sim_services.swig_double___ifloordiv__(self, *args) + + def __imod__(self, *args): + return _sim_services.swig_double___imod__(self, *args) + + def __ipow__(self, *args): + return _sim_services.swig_double___ipow__(self, *args) + + def __lt__(self, *args): + return _sim_services.swig_double___lt__(self, *args) + + def __le__(self, *args): + return _sim_services.swig_double___le__(self, *args) + + def __eq__(self, *args): + return _sim_services.swig_double___eq__(self, *args) + + def __ne__(self, *args): + return _sim_services.swig_double___ne__(self, *args) + + def __gt__(self, *args): + return _sim_services.swig_double___gt__(self, *args) + + def __ge__(self, *args): + return _sim_services.swig_double___ge__(self, *args) + + def __neg__(self, *args): + return _sim_services.swig_double___neg__(self, *args) + + def __pos__(self, *args): + return _sim_services.swig_double___pos__(self, *args) + + def __abs__(self, *args): + return _sim_services.swig_double___abs__(self, *args) + + def __int__(self, *args): + return _sim_services.swig_double___int__(self, *args) + + def __long__(self, *args): + return _sim_services.swig_double___long__(self, *args) + + def __float__(self, *args): + return _sim_services.swig_double___float__(self, *args) + + def __len__(self, *args): + return _sim_services.swig_double___len__(self, *args) + __swig_destroy__ = _sim_services.delete_swig_double + __del__ = lambda self: None +swig_double_swigregister = _sim_services.swig_double_swigregister +swig_double_swigregister(swig_double) +cvar = _sim_services.cvar + + +def map_trick_units_to_udunits(*args): + return _sim_services.map_trick_units_to_udunits(*args) +map_trick_units_to_udunits = _sim_services.map_trick_units_to_udunits +class InputProcessor(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, InputProcessor, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, InputProcessor, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_setmethods__["verify_input"] = _sim_services.InputProcessor_verify_input_set + __swig_getmethods__["verify_input"] = _sim_services.InputProcessor_verify_input_get + if _newclass: + verify_input = _swig_property(_sim_services.InputProcessor_verify_input_get, _sim_services.InputProcessor_verify_input_set) + __swig_setmethods__["input_file"] = _sim_services.InputProcessor_input_file_set + __swig_getmethods__["input_file"] = _sim_services.InputProcessor_input_file_get + if _newclass: + input_file = _swig_property(_sim_services.InputProcessor_input_file_get, _sim_services.InputProcessor_input_file_set) + __swig_destroy__ = _sim_services.delete_InputProcessor + __del__ = lambda self: None + + def process_sim_args(self, *args): + return _sim_services.InputProcessor_process_sim_args(self, *args) + + def parse(self, *args): + return _sim_services.InputProcessor_parse(self, *args) + + def shutdown(self, *args): + return _sim_services.InputProcessor_shutdown(self, *args) +InputProcessor_swigregister = _sim_services.InputProcessor_swigregister +InputProcessor_swigregister(InputProcessor) + +class IPPython(InputProcessor): + __swig_setmethods__ = {} + for _s in [InputProcessor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, IPPython, name, value) + __swig_getmethods__ = {} + for _s in [InputProcessor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, IPPython, name) + __repr__ = _swig_repr + __swig_setmethods__["return_val"] = _sim_services.IPPython_return_val_set + __swig_getmethods__["return_val"] = _sim_services.IPPython_return_val_get + if _newclass: + return_val = _swig_property(_sim_services.IPPython_return_val_get, _sim_services.IPPython_return_val_set) + __swig_setmethods__["ip_mutex"] = _sim_services.IPPython_ip_mutex_set + __swig_getmethods__["ip_mutex"] = _sim_services.IPPython_ip_mutex_get + if _newclass: + ip_mutex = _swig_property(_sim_services.IPPython_ip_mutex_get, _sim_services.IPPython_ip_mutex_set) + + def __init__(self, *args): + this = _sim_services.new_IPPython(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def get_TMM_named_variables(self, *args): + return _sim_services.IPPython_get_TMM_named_variables(self, *args) + + def get_units_conversion_msgs(self, *args): + return _sim_services.IPPython_get_units_conversion_msgs(self, *args) + + def shoot_the_units_conversion_messenger(self, *args): + return _sim_services.IPPython_shoot_the_units_conversion_messenger(self, *args) + + def init(self, *args): + return _sim_services.IPPython_init(self, *args) + + def shutdown(self, *args): + return _sim_services.IPPython_shutdown(self, *args) + + def parse(self, *args): + return _sim_services.IPPython_parse(self, *args) + + def parse_condition(self, *args): + return _sim_services.IPPython_parse_condition(self, *args) + + def restart(self, *args): + return _sim_services.IPPython_restart(self, *args) + __swig_destroy__ = _sim_services.delete_IPPython + __del__ = lambda self: None +IPPython_swigregister = _sim_services.IPPython_swigregister +IPPython_swigregister(IPPython) + + +def init_swig_modules(*args): + return _sim_services.init_swig_modules(*args) +init_swig_modules = _sim_services.init_swig_modules + +def shoot_the_units_conversion_messenger(*args): + return _sim_services.shoot_the_units_conversion_messenger(*args) +shoot_the_units_conversion_messenger = _sim_services.shoot_the_units_conversion_messenger + +def revive_the_units_conversion_messenger(*args): + return _sim_services.revive_the_units_conversion_messenger(*args) +revive_the_units_conversion_messenger = _sim_services.revive_the_units_conversion_messenger + +def check_units_conversion_messenger_for_signs_of_life(*args): + return _sim_services.check_units_conversion_messenger_for_signs_of_life(*args) +check_units_conversion_messenger_for_signs_of_life = _sim_services.check_units_conversion_messenger_for_signs_of_life + +def attach_units(*args): + return _sim_services.attach_units(*args) +attach_units = _sim_services.attach_units + +def wrap_ptr(*args): + return _sim_services.wrap_ptr(*args) +wrap_ptr = _sim_services.wrap_ptr + +def unhex_double(*args): + return _sim_services.unhex_double(*args) +unhex_double = _sim_services.unhex_double + +def unhex_float(*args): + return _sim_services.unhex_float(*args) +unhex_float = _sim_services.unhex_float + +def new_cvar_list(*args): + return _sim_services.new_cvar_list(*args) +new_cvar_list = _sim_services.new_cvar_list + +def combine_cvars(*args): + return _sim_services.combine_cvars(*args) +combine_cvars = _sim_services.combine_cvars +Roll_Pitch_Yaw = _sim_services.Roll_Pitch_Yaw +Roll_Yaw_Pitch = _sim_services.Roll_Yaw_Pitch +Pitch_Yaw_Roll = _sim_services.Pitch_Yaw_Roll +Pitch_Roll_Yaw = _sim_services.Pitch_Roll_Yaw +Yaw_Roll_Pitch = _sim_services.Yaw_Roll_Pitch +Yaw_Pitch_Roll = _sim_services.Yaw_Pitch_Roll +class TRANSFORM(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TRANSFORM, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TRANSFORM, name) + __repr__ = _swig_repr + __swig_setmethods__["euler_sequence"] = _sim_services.TRANSFORM_euler_sequence_set + __swig_getmethods__["euler_sequence"] = _sim_services.TRANSFORM_euler_sequence_get + if _newclass: + euler_sequence = _swig_property(_sim_services.TRANSFORM_euler_sequence_get, _sim_services.TRANSFORM_euler_sequence_set) + __swig_setmethods__["euler_angles"] = _sim_services.TRANSFORM_euler_angles_set + __swig_getmethods__["euler_angles"] = _sim_services.TRANSFORM_euler_angles_get + if _newclass: + euler_angles = _swig_property(_sim_services.TRANSFORM_euler_angles_get, _sim_services.TRANSFORM_euler_angles_set) + __swig_setmethods__["location"] = _sim_services.TRANSFORM_location_set + __swig_getmethods__["location"] = _sim_services.TRANSFORM_location_get + if _newclass: + location = _swig_property(_sim_services.TRANSFORM_location_get, _sim_services.TRANSFORM_location_set) + + def __init__(self): + this = _sim_services.new_TRANSFORM() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TRANSFORM + __del__ = lambda self: None +TRANSFORM_swigregister = _sim_services.TRANSFORM_swigregister +TRANSFORM_swigregister(TRANSFORM) + +UNIFORM_RND_1 = _sim_services.UNIFORM_RND_1 +UNIFORM_RND_TRIPLE = _sim_services.UNIFORM_RND_TRIPLE +GAUSS_RND_PSEUDO = _sim_services.GAUSS_RND_PSEUDO +GAUSS_RND_BELL = _sim_services.GAUSS_RND_BELL +RND_NUM_1 = _sim_services.RND_NUM_1 +LCG1 = _sim_services.LCG1 +TRIPLE = _sim_services.TRIPLE +class RAND_GENERATOR(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RAND_GENERATOR, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RAND_GENERATOR, name) + __repr__ = _swig_repr + __swig_setmethods__["option"] = _sim_services.RAND_GENERATOR_option_set + __swig_getmethods__["option"] = _sim_services.RAND_GENERATOR_option_get + if _newclass: + option = _swig_property(_sim_services.RAND_GENERATOR_option_get, _sim_services.RAND_GENERATOR_option_set) + __swig_setmethods__["uniform"] = _sim_services.RAND_GENERATOR_uniform_set + __swig_getmethods__["uniform"] = _sim_services.RAND_GENERATOR_uniform_get + if _newclass: + uniform = _swig_property(_sim_services.RAND_GENERATOR_uniform_get, _sim_services.RAND_GENERATOR_uniform_set) + __swig_setmethods__["seed_1"] = _sim_services.RAND_GENERATOR_seed_1_set + __swig_getmethods__["seed_1"] = _sim_services.RAND_GENERATOR_seed_1_get + if _newclass: + seed_1 = _swig_property(_sim_services.RAND_GENERATOR_seed_1_get, _sim_services.RAND_GENERATOR_seed_1_set) + __swig_setmethods__["seed_trpl"] = _sim_services.RAND_GENERATOR_seed_trpl_set + __swig_getmethods__["seed_trpl"] = _sim_services.RAND_GENERATOR_seed_trpl_get + if _newclass: + seed_trpl = _swig_property(_sim_services.RAND_GENERATOR_seed_trpl_get, _sim_services.RAND_GENERATOR_seed_trpl_set) + __swig_setmethods__["iff"] = _sim_services.RAND_GENERATOR_iff_set + __swig_getmethods__["iff"] = _sim_services.RAND_GENERATOR_iff_get + if _newclass: + iff = _swig_property(_sim_services.RAND_GENERATOR_iff_get, _sim_services.RAND_GENERATOR_iff_set) + __swig_setmethods__["table"] = _sim_services.RAND_GENERATOR_table_set + __swig_getmethods__["table"] = _sim_services.RAND_GENERATOR_table_get + if _newclass: + table = _swig_property(_sim_services.RAND_GENERATOR_table_get, _sim_services.RAND_GENERATOR_table_set) + __swig_setmethods__["sigma_range"] = _sim_services.RAND_GENERATOR_sigma_range_set + __swig_getmethods__["sigma_range"] = _sim_services.RAND_GENERATOR_sigma_range_get + if _newclass: + sigma_range = _swig_property(_sim_services.RAND_GENERATOR_sigma_range_get, _sim_services.RAND_GENERATOR_sigma_range_set) + __swig_setmethods__["ix1"] = _sim_services.RAND_GENERATOR_ix1_set + __swig_getmethods__["ix1"] = _sim_services.RAND_GENERATOR_ix1_get + if _newclass: + ix1 = _swig_property(_sim_services.RAND_GENERATOR_ix1_get, _sim_services.RAND_GENERATOR_ix1_set) + __swig_setmethods__["ix2"] = _sim_services.RAND_GENERATOR_ix2_set + __swig_getmethods__["ix2"] = _sim_services.RAND_GENERATOR_ix2_get + if _newclass: + ix2 = _swig_property(_sim_services.RAND_GENERATOR_ix2_get, _sim_services.RAND_GENERATOR_ix2_set) + __swig_setmethods__["ix3"] = _sim_services.RAND_GENERATOR_ix3_set + __swig_getmethods__["ix3"] = _sim_services.RAND_GENERATOR_ix3_get + if _newclass: + ix3 = _swig_property(_sim_services.RAND_GENERATOR_ix3_get, _sim_services.RAND_GENERATOR_ix3_set) + + def __init__(self): + this = _sim_services.new_RAND_GENERATOR() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RAND_GENERATOR + __del__ = lambda self: None +RAND_GENERATOR_swigregister = _sim_services.RAND_GENERATOR_swigregister +RAND_GENERATOR_swigregister(RAND_GENERATOR) + +TRICK_GSL_GAUSS = _sim_services.TRICK_GSL_GAUSS +TRICK_GSL_FLAT = _sim_services.TRICK_GSL_FLAT +TRICK_GSL_POISSON = _sim_services.TRICK_GSL_POISSON +class TRICK_GSL_RANDIST(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TRICK_GSL_RANDIST, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TRICK_GSL_RANDIST, name) + __repr__ = _swig_repr + __swig_setmethods__["rng"] = _sim_services.TRICK_GSL_RANDIST_rng_set + __swig_getmethods__["rng"] = _sim_services.TRICK_GSL_RANDIST_rng_get + if _newclass: + rng = _swig_property(_sim_services.TRICK_GSL_RANDIST_rng_get, _sim_services.TRICK_GSL_RANDIST_rng_set) + __swig_setmethods__["type"] = _sim_services.TRICK_GSL_RANDIST_type_set + __swig_getmethods__["type"] = _sim_services.TRICK_GSL_RANDIST_type_get + if _newclass: + type = _swig_property(_sim_services.TRICK_GSL_RANDIST_type_get, _sim_services.TRICK_GSL_RANDIST_type_set) + __swig_setmethods__["seed"] = _sim_services.TRICK_GSL_RANDIST_seed_set + __swig_getmethods__["seed"] = _sim_services.TRICK_GSL_RANDIST_seed_get + if _newclass: + seed = _swig_property(_sim_services.TRICK_GSL_RANDIST_seed_get, _sim_services.TRICK_GSL_RANDIST_seed_set) + __swig_setmethods__["sigma"] = _sim_services.TRICK_GSL_RANDIST_sigma_set + __swig_getmethods__["sigma"] = _sim_services.TRICK_GSL_RANDIST_sigma_get + if _newclass: + sigma = _swig_property(_sim_services.TRICK_GSL_RANDIST_sigma_get, _sim_services.TRICK_GSL_RANDIST_sigma_set) + __swig_setmethods__["mu"] = _sim_services.TRICK_GSL_RANDIST_mu_set + __swig_getmethods__["mu"] = _sim_services.TRICK_GSL_RANDIST_mu_get + if _newclass: + mu = _swig_property(_sim_services.TRICK_GSL_RANDIST_mu_get, _sim_services.TRICK_GSL_RANDIST_mu_set) + __swig_setmethods__["min"] = _sim_services.TRICK_GSL_RANDIST_min_set + __swig_getmethods__["min"] = _sim_services.TRICK_GSL_RANDIST_min_get + if _newclass: + min = _swig_property(_sim_services.TRICK_GSL_RANDIST_min_get, _sim_services.TRICK_GSL_RANDIST_min_set) + __swig_setmethods__["max"] = _sim_services.TRICK_GSL_RANDIST_max_set + __swig_getmethods__["max"] = _sim_services.TRICK_GSL_RANDIST_max_get + if _newclass: + max = _swig_property(_sim_services.TRICK_GSL_RANDIST_max_get, _sim_services.TRICK_GSL_RANDIST_max_set) + __swig_setmethods__["rel_min"] = _sim_services.TRICK_GSL_RANDIST_rel_min_set + __swig_getmethods__["rel_min"] = _sim_services.TRICK_GSL_RANDIST_rel_min_get + if _newclass: + rel_min = _swig_property(_sim_services.TRICK_GSL_RANDIST_rel_min_get, _sim_services.TRICK_GSL_RANDIST_rel_min_set) + __swig_setmethods__["rel_max"] = _sim_services.TRICK_GSL_RANDIST_rel_max_set + __swig_getmethods__["rel_max"] = _sim_services.TRICK_GSL_RANDIST_rel_max_get + if _newclass: + rel_max = _swig_property(_sim_services.TRICK_GSL_RANDIST_rel_max_get, _sim_services.TRICK_GSL_RANDIST_rel_max_set) + __swig_setmethods__["sigma_range"] = _sim_services.TRICK_GSL_RANDIST_sigma_range_set + __swig_getmethods__["sigma_range"] = _sim_services.TRICK_GSL_RANDIST_sigma_range_get + if _newclass: + sigma_range = _swig_property(_sim_services.TRICK_GSL_RANDIST_sigma_range_get, _sim_services.TRICK_GSL_RANDIST_sigma_range_set) + __swig_setmethods__["uniform"] = _sim_services.TRICK_GSL_RANDIST_uniform_set + __swig_getmethods__["uniform"] = _sim_services.TRICK_GSL_RANDIST_uniform_get + if _newclass: + uniform = _swig_property(_sim_services.TRICK_GSL_RANDIST_uniform_get, _sim_services.TRICK_GSL_RANDIST_uniform_set) + + def __init__(self): + this = _sim_services.new_TRICK_GSL_RANDIST() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TRICK_GSL_RANDIST + __del__ = lambda self: None +TRICK_GSL_RANDIST_swigregister = _sim_services.TRICK_GSL_RANDIST_swigregister +TRICK_GSL_RANDIST_swigregister(TRICK_GSL_RANDIST) + +class TRICK_GSL_RETURN_TYPE(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TRICK_GSL_RETURN_TYPE, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TRICK_GSL_RETURN_TYPE, name) + __repr__ = _swig_repr + __swig_setmethods__["ui"] = _sim_services.TRICK_GSL_RETURN_TYPE_ui_set + __swig_getmethods__["ui"] = _sim_services.TRICK_GSL_RETURN_TYPE_ui_get + if _newclass: + ui = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_ui_get, _sim_services.TRICK_GSL_RETURN_TYPE_ui_set) + __swig_setmethods__["d"] = _sim_services.TRICK_GSL_RETURN_TYPE_d_set + __swig_getmethods__["d"] = _sim_services.TRICK_GSL_RETURN_TYPE_d_get + if _newclass: + d = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_d_get, _sim_services.TRICK_GSL_RETURN_TYPE_d_set) + __swig_setmethods__["ll"] = _sim_services.TRICK_GSL_RETURN_TYPE_ll_set + __swig_getmethods__["ll"] = _sim_services.TRICK_GSL_RETURN_TYPE_ll_get + if _newclass: + ll = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_ll_get, _sim_services.TRICK_GSL_RETURN_TYPE_ll_set) + __swig_setmethods__["ii"] = _sim_services.TRICK_GSL_RETURN_TYPE_ii_set + __swig_getmethods__["ii"] = _sim_services.TRICK_GSL_RETURN_TYPE_ii_get + if _newclass: + ii = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_ii_get, _sim_services.TRICK_GSL_RETURN_TYPE_ii_set) + + def __init__(self): + this = _sim_services.new_TRICK_GSL_RETURN_TYPE() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TRICK_GSL_RETURN_TYPE + __del__ = lambda self: None +TRICK_GSL_RETURN_TYPE_swigregister = _sim_services.TRICK_GSL_RETURN_TYPE_swigregister +TRICK_GSL_RETURN_TYPE_swigregister(TRICK_GSL_RETURN_TYPE) + + +def trick_gsl_rand_init(*args): + return _sim_services.trick_gsl_rand_init(*args) +trick_gsl_rand_init = _sim_services.trick_gsl_rand_init + +def trick_gsl_rand_alloc(*args): + return _sim_services.trick_gsl_rand_alloc(*args) +trick_gsl_rand_alloc = _sim_services.trick_gsl_rand_alloc + +def trick_gsl_rand_seed(*args): + return _sim_services.trick_gsl_rand_seed(*args) +trick_gsl_rand_seed = _sim_services.trick_gsl_rand_seed + +def trick_gsl_rand(*args): + return _sim_services.trick_gsl_rand(*args) +trick_gsl_rand = _sim_services.trick_gsl_rand + +def trick_gsl_rand_shutdown(*args): + return _sim_services.trick_gsl_rand_shutdown(*args) +trick_gsl_rand_shutdown = _sim_services.trick_gsl_rand_shutdown +Pulse = _sim_services.Pulse +Ramp = _sim_services.Ramp +Square = _sim_services.Square +Square_Doublet = _sim_services.Square_Doublet +Triangle = _sim_services.Triangle +Triangle_Doublet = _sim_services.Triangle_Doublet +Sine = _sim_services.Sine +Noise = _sim_services.Noise +Gauss_Noise = _sim_services.Gauss_Noise +User_Wave = _sim_services.User_Wave +class WAVE_FORM(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, WAVE_FORM, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, WAVE_FORM, name) + __repr__ = _swig_repr + __swig_setmethods__["type"] = _sim_services.WAVE_FORM_type_set + __swig_getmethods__["type"] = _sim_services.WAVE_FORM_type_get + if _newclass: + type = _swig_property(_sim_services.WAVE_FORM_type_get, _sim_services.WAVE_FORM_type_set) + __swig_setmethods__["start"] = _sim_services.WAVE_FORM_start_set + __swig_getmethods__["start"] = _sim_services.WAVE_FORM_start_get + if _newclass: + start = _swig_property(_sim_services.WAVE_FORM_start_get, _sim_services.WAVE_FORM_start_set) + __swig_setmethods__["stop"] = _sim_services.WAVE_FORM_stop_set + __swig_getmethods__["stop"] = _sim_services.WAVE_FORM_stop_get + if _newclass: + stop = _swig_property(_sim_services.WAVE_FORM_stop_get, _sim_services.WAVE_FORM_stop_set) + __swig_setmethods__["ramp"] = _sim_services.WAVE_FORM_ramp_set + __swig_getmethods__["ramp"] = _sim_services.WAVE_FORM_ramp_get + if _newclass: + ramp = _swig_property(_sim_services.WAVE_FORM_ramp_get, _sim_services.WAVE_FORM_ramp_set) + __swig_setmethods__["pause"] = _sim_services.WAVE_FORM_pause_set + __swig_getmethods__["pause"] = _sim_services.WAVE_FORM_pause_get + if _newclass: + pause = _swig_property(_sim_services.WAVE_FORM_pause_get, _sim_services.WAVE_FORM_pause_set) + __swig_setmethods__["frequency"] = _sim_services.WAVE_FORM_frequency_set + __swig_getmethods__["frequency"] = _sim_services.WAVE_FORM_frequency_get + if _newclass: + frequency = _swig_property(_sim_services.WAVE_FORM_frequency_get, _sim_services.WAVE_FORM_frequency_set) + __swig_setmethods__["phase"] = _sim_services.WAVE_FORM_phase_set + __swig_getmethods__["phase"] = _sim_services.WAVE_FORM_phase_get + if _newclass: + phase = _swig_property(_sim_services.WAVE_FORM_phase_get, _sim_services.WAVE_FORM_phase_set) + __swig_setmethods__["init_random"] = _sim_services.WAVE_FORM_init_random_set + __swig_getmethods__["init_random"] = _sim_services.WAVE_FORM_init_random_get + if _newclass: + init_random = _swig_property(_sim_services.WAVE_FORM_init_random_get, _sim_services.WAVE_FORM_init_random_set) + __swig_setmethods__["random_seed"] = _sim_services.WAVE_FORM_random_seed_set + __swig_getmethods__["random_seed"] = _sim_services.WAVE_FORM_random_seed_get + if _newclass: + random_seed = _swig_property(_sim_services.WAVE_FORM_random_seed_get, _sim_services.WAVE_FORM_random_seed_set) + __swig_setmethods__["sigma_range"] = _sim_services.WAVE_FORM_sigma_range_set + __swig_getmethods__["sigma_range"] = _sim_services.WAVE_FORM_sigma_range_get + if _newclass: + sigma_range = _swig_property(_sim_services.WAVE_FORM_sigma_range_get, _sim_services.WAVE_FORM_sigma_range_set) + __swig_setmethods__["init_user_data"] = _sim_services.WAVE_FORM_init_user_data_set + __swig_getmethods__["init_user_data"] = _sim_services.WAVE_FORM_init_user_data_get + if _newclass: + init_user_data = _swig_property(_sim_services.WAVE_FORM_init_user_data_get, _sim_services.WAVE_FORM_init_user_data_set) + __swig_setmethods__["user_data"] = _sim_services.WAVE_FORM_user_data_set + __swig_getmethods__["user_data"] = _sim_services.WAVE_FORM_user_data_get + if _newclass: + user_data = _swig_property(_sim_services.WAVE_FORM_user_data_get, _sim_services.WAVE_FORM_user_data_set) + __swig_setmethods__["fp"] = _sim_services.WAVE_FORM_fp_set + __swig_getmethods__["fp"] = _sim_services.WAVE_FORM_fp_get + if _newclass: + fp = _swig_property(_sim_services.WAVE_FORM_fp_get, _sim_services.WAVE_FORM_fp_set) + __swig_setmethods__["next_time"] = _sim_services.WAVE_FORM_next_time_set + __swig_getmethods__["next_time"] = _sim_services.WAVE_FORM_next_time_get + if _newclass: + next_time = _swig_property(_sim_services.WAVE_FORM_next_time_get, _sim_services.WAVE_FORM_next_time_set) + __swig_setmethods__["next_val"] = _sim_services.WAVE_FORM_next_val_set + __swig_getmethods__["next_val"] = _sim_services.WAVE_FORM_next_val_get + if _newclass: + next_val = _swig_property(_sim_services.WAVE_FORM_next_val_get, _sim_services.WAVE_FORM_next_val_set) + __swig_setmethods__["user_time"] = _sim_services.WAVE_FORM_user_time_set + __swig_getmethods__["user_time"] = _sim_services.WAVE_FORM_user_time_get + if _newclass: + user_time = _swig_property(_sim_services.WAVE_FORM_user_time_get, _sim_services.WAVE_FORM_user_time_set) + __swig_setmethods__["user_val"] = _sim_services.WAVE_FORM_user_val_set + __swig_getmethods__["user_val"] = _sim_services.WAVE_FORM_user_val_get + if _newclass: + user_val = _swig_property(_sim_services.WAVE_FORM_user_val_get, _sim_services.WAVE_FORM_user_val_set) + + def __init__(self): + this = _sim_services.new_WAVE_FORM() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_WAVE_FORM + __del__ = lambda self: None +WAVE_FORM_swigregister = _sim_services.WAVE_FORM_swigregister +WAVE_FORM_swigregister(WAVE_FORM) + + +def integrate(*args): + return _sim_services.integrate(*args) +integrate = _sim_services.integrate + +def integrate_1st_order_ode(*args): + return _sim_services.integrate_1st_order_ode(*args) +integrate_1st_order_ode = _sim_services.integrate_1st_order_ode + +def integrate_2nd_order_ode(*args): + return _sim_services.integrate_2nd_order_ode(*args) +integrate_2nd_order_ode = _sim_services.integrate_2nd_order_ode + +def get_integ_time(*args): + return _sim_services.get_integ_time(*args) +get_integ_time = _sim_services.get_integ_time + +def set_integ_time(*args): + return _sim_services.set_integ_time(*args) +set_integ_time = _sim_services.set_integ_time + +def reset_state(*args): + return _sim_services.reset_state(*args) +reset_state = _sim_services.reset_state + +def load_state(*args): + return _sim_services.load_state(*args) +load_state = _sim_services.load_state + +def load_deriv(*args): + return _sim_services.load_deriv(*args) +load_deriv = _sim_services.load_deriv + +def load_deriv2(*args): + return _sim_services.load_deriv2(*args) +load_deriv2 = _sim_services.load_deriv2 + +def unload_state(*args): + return _sim_services.unload_state(*args) +unload_state = _sim_services.unload_state + +def load_indexed_state(*args): + return _sim_services.load_indexed_state(*args) +load_indexed_state = _sim_services.load_indexed_state + +def load_indexed_deriv(*args): + return _sim_services.load_indexed_deriv(*args) +load_indexed_deriv = _sim_services.load_indexed_deriv + +def load_indexed_deriv2(*args): + return _sim_services.load_indexed_deriv2(*args) +load_indexed_deriv2 = _sim_services.load_indexed_deriv2 + +def unload_indexed_state(*args): + return _sim_services.unload_indexed_state(*args) +unload_indexed_state = _sim_services.unload_indexed_state + +def get_intermediate_step(*args): + return _sim_services.get_intermediate_step(*args) +get_intermediate_step = _sim_services.get_intermediate_step + +def set_intermediate_step(*args): + return _sim_services.set_intermediate_step(*args) +set_intermediate_step = _sim_services.set_intermediate_step + +def get_integ_type(*args): + return _sim_services.get_integ_type(*args) +get_integ_type = _sim_services.get_integ_type +MAX_TRIADS = _sim_services.MAX_TRIADS +MAX_UNITS_SPEC_STRLEN = _sim_services.MAX_UNITS_SPEC_STRLEN +CONV_OK = _sim_services.CONV_OK +CONV_ERR = _sim_services.CONV_ERR +class triad_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, triad_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, triad_t, name) + __repr__ = _swig_repr + __swig_setmethods__["op"] = _sim_services.triad_t_op_set + __swig_getmethods__["op"] = _sim_services.triad_t_op_get + if _newclass: + op = _swig_property(_sim_services.triad_t_op_get, _sim_services.triad_t_op_set) + __swig_setmethods__["a1"] = _sim_services.triad_t_a1_set + __swig_getmethods__["a1"] = _sim_services.triad_t_a1_get + if _newclass: + a1 = _swig_property(_sim_services.triad_t_a1_get, _sim_services.triad_t_a1_set) + __swig_setmethods__["a2"] = _sim_services.triad_t_a2_set + __swig_getmethods__["a2"] = _sim_services.triad_t_a2_get + if _newclass: + a2 = _swig_property(_sim_services.triad_t_a2_get, _sim_services.triad_t_a2_set) + + def __init__(self): + this = _sim_services.new_triad_t() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_triad_t + __del__ = lambda self: None +triad_t_swigregister = _sim_services.triad_t_swigregister +triad_t_swigregister(triad_t) + +class Units_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Units_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Units_t, name) + __repr__ = _swig_repr + __swig_setmethods__["nt"] = _sim_services.Units_t_nt_set + __swig_getmethods__["nt"] = _sim_services.Units_t_nt_get + if _newclass: + nt = _swig_property(_sim_services.Units_t_nt_get, _sim_services.Units_t_nt_set) + __swig_setmethods__["t"] = _sim_services.Units_t_t_set + __swig_getmethods__["t"] = _sim_services.Units_t_t_get + if _newclass: + t = _swig_property(_sim_services.Units_t_t_get, _sim_services.Units_t_t_set) + + def __init__(self): + this = _sim_services.new_Units_t() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_Units_t + __del__ = lambda self: None +Units_t_swigregister = _sim_services.Units_t_swigregister +Units_t_swigregister(Units_t) + +class UnitsConvFn_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, UnitsConvFn_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, UnitsConvFn_t, name) + __repr__ = _swig_repr + __swig_setmethods__["C"] = _sim_services.UnitsConvFn_t_C_set + __swig_getmethods__["C"] = _sim_services.UnitsConvFn_t_C_get + if _newclass: + C = _swig_property(_sim_services.UnitsConvFn_t_C_get, _sim_services.UnitsConvFn_t_C_set) + + def __init__(self): + this = _sim_services.new_UnitsConvFn_t() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_UnitsConvFn_t + __del__ = lambda self: None +UnitsConvFn_t_swigregister = _sim_services.UnitsConvFn_t_swigregister +UnitsConvFn_t_swigregister(UnitsConvFn_t) + + +def new_units(*args): + return _sim_services.new_units(*args) +new_units = _sim_services.new_units + +def conv_fn_u(*args): + return _sim_services.conv_fn_u(*args) +conv_fn_u = _sim_services.conv_fn_u + +def conv_fn_s(*args): + return _sim_services.conv_fn_s(*args) +conv_fn_s = _sim_services.conv_fn_s + +def convert_units(*args): + return _sim_services.convert_units(*args) +convert_units = _sim_services.convert_units + +def convert_units_spec(*args): + return _sim_services.convert_units_spec(*args) +convert_units_spec = _sim_services.convert_units_spec + +def list_units(*args): + return _sim_services.list_units(*args) +list_units = _sim_services.list_units +class Clock(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Clock, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Clock, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_Clock + __del__ = lambda self: None + + def calc_sim_time_ratio(self, *args): + return _sim_services.Clock_calc_sim_time_ratio(self, *args) + + def get_rt_clock_ratio(self, *args): + return _sim_services.Clock_get_rt_clock_ratio(self, *args) + + def set_global_clock(self, *args): + return _sim_services.Clock_set_global_clock(self, *args) + + def set_rt_clock_ratio(self, *args): + return _sim_services.Clock_set_rt_clock_ratio(self, *args) + + def adjust_ref_time(self, *args): + return _sim_services.Clock_adjust_ref_time(self, *args) + + def set_reference(self, *args): + return _sim_services.Clock_set_reference(self, *args) + + def sync_to_wall_clock(self, *args): + return _sim_services.Clock_sync_to_wall_clock(self, *args) + + def clock_time(self, *args): + return _sim_services.Clock_clock_time(self, *args) + + def clock_reset(self, *args): + return _sim_services.Clock_clock_reset(self, *args) + + def get_name(self, *args): + return _sim_services.Clock_get_name(self, *args) + + def clock_init(self, *args): + return _sim_services.Clock_clock_init(self, *args) + + def wall_clock_time(self, *args): + return _sim_services.Clock_wall_clock_time(self, *args) + + def clock_spin(self, *args): + return _sim_services.Clock_clock_spin(self, *args) + + def clock_stop(self, *args): + return _sim_services.Clock_clock_stop(self, *args) + __swig_setmethods__["name"] = _sim_services.Clock_name_set + __swig_getmethods__["name"] = _sim_services.Clock_name_get + if _newclass: + name = _swig_property(_sim_services.Clock_name_get, _sim_services.Clock_name_set) + __swig_setmethods__["clock_tics_per_sec"] = _sim_services.Clock_clock_tics_per_sec_set + __swig_getmethods__["clock_tics_per_sec"] = _sim_services.Clock_clock_tics_per_sec_get + if _newclass: + clock_tics_per_sec = _swig_property(_sim_services.Clock_clock_tics_per_sec_get, _sim_services.Clock_clock_tics_per_sec_set) + __swig_setmethods__["rt_clock_ratio"] = _sim_services.Clock_rt_clock_ratio_set + __swig_getmethods__["rt_clock_ratio"] = _sim_services.Clock_rt_clock_ratio_get + if _newclass: + rt_clock_ratio = _swig_property(_sim_services.Clock_rt_clock_ratio_get, _sim_services.Clock_rt_clock_ratio_set) + __swig_setmethods__["sim_tic_ratio"] = _sim_services.Clock_sim_tic_ratio_set + __swig_getmethods__["sim_tic_ratio"] = _sim_services.Clock_sim_tic_ratio_get + if _newclass: + sim_tic_ratio = _swig_property(_sim_services.Clock_sim_tic_ratio_get, _sim_services.Clock_sim_tic_ratio_set) + __swig_setmethods__["ref_time_tics"] = _sim_services.Clock_ref_time_tics_set + __swig_getmethods__["ref_time_tics"] = _sim_services.Clock_ref_time_tics_get + if _newclass: + ref_time_tics = _swig_property(_sim_services.Clock_ref_time_tics_get, _sim_services.Clock_ref_time_tics_set) +Clock_swigregister = _sim_services.Clock_swigregister +Clock_swigregister(Clock) + +class GetTimeOfDayClock(Clock): + __swig_setmethods__ = {} + for _s in [Clock]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, GetTimeOfDayClock, name, value) + __swig_getmethods__ = {} + for _s in [Clock]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, GetTimeOfDayClock, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_GetTimeOfDayClock(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_GetTimeOfDayClock + __del__ = lambda self: None + + def clock_init(self, *args): + return _sim_services.GetTimeOfDayClock_clock_init(self, *args) + + def wall_clock_time(self, *args): + return _sim_services.GetTimeOfDayClock_wall_clock_time(self, *args) + + def clock_stop(self, *args): + return _sim_services.GetTimeOfDayClock_clock_stop(self, *args) + + def set_clock_ID(self, *args): + return _sim_services.GetTimeOfDayClock_set_clock_ID(self, *args) + + def get_clock_ID(self, *args): + return _sim_services.GetTimeOfDayClock_get_clock_ID(self, *args) +GetTimeOfDayClock_swigregister = _sim_services.GetTimeOfDayClock_swigregister +GetTimeOfDayClock_swigregister(GetTimeOfDayClock) + + +def clock_time(*args): + return _sim_services.clock_time(*args) +clock_time = _sim_services.clock_time + +def clock_wall_time(*args): + return _sim_services.clock_wall_time(*args) +clock_wall_time = _sim_services.clock_wall_time + +def clock_reset(*args): + return _sim_services.clock_reset(*args) +clock_reset = _sim_services.clock_reset + +def clock_spin(*args): + return _sim_services.clock_spin(*args) +clock_spin = _sim_services.clock_spin + +def clock_set_reference(*args): + return _sim_services.clock_set_reference(*args) +clock_set_reference = _sim_services.clock_set_reference + +def clock_get_rt_clock_ratio(*args): + return _sim_services.clock_get_rt_clock_ratio(*args) +clock_get_rt_clock_ratio = _sim_services.clock_get_rt_clock_ratio + +def clock_set_rt_clock_ratio(*args): + return _sim_services.clock_set_rt_clock_ratio(*args) +clock_set_rt_clock_ratio = _sim_services.clock_set_rt_clock_ratio + +def clock_tics_per_sec(*args): + return _sim_services.clock_tics_per_sec(*args) +clock_tics_per_sec = _sim_services.clock_tics_per_sec +class CommandLineArguments(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, CommandLineArguments, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, CommandLineArguments, name) + __repr__ = _swig_repr + __swig_setmethods__["argc"] = _sim_services.CommandLineArguments_argc_set + __swig_getmethods__["argc"] = _sim_services.CommandLineArguments_argc_get + if _newclass: + argc = _swig_property(_sim_services.CommandLineArguments_argc_get, _sim_services.CommandLineArguments_argc_set) + __swig_setmethods__["argv"] = _sim_services.CommandLineArguments_argv_set + __swig_getmethods__["argv"] = _sim_services.CommandLineArguments_argv_get + if _newclass: + argv = _swig_property(_sim_services.CommandLineArguments_argv_get, _sim_services.CommandLineArguments_argv_set) + __swig_setmethods__["output_dir_timestamped"] = _sim_services.CommandLineArguments_output_dir_timestamped_set + __swig_getmethods__["output_dir_timestamped"] = _sim_services.CommandLineArguments_output_dir_timestamped_get + if _newclass: + output_dir_timestamped = _swig_property(_sim_services.CommandLineArguments_output_dir_timestamped_get, _sim_services.CommandLineArguments_output_dir_timestamped_set) + __swig_setmethods__["default_dir"] = _sim_services.CommandLineArguments_default_dir_set + __swig_getmethods__["default_dir"] = _sim_services.CommandLineArguments_default_dir_get + if _newclass: + default_dir = _swig_property(_sim_services.CommandLineArguments_default_dir_get, _sim_services.CommandLineArguments_default_dir_set) + __swig_setmethods__["cmdline_name"] = _sim_services.CommandLineArguments_cmdline_name_set + __swig_getmethods__["cmdline_name"] = _sim_services.CommandLineArguments_cmdline_name_get + if _newclass: + cmdline_name = _swig_property(_sim_services.CommandLineArguments_cmdline_name_get, _sim_services.CommandLineArguments_cmdline_name_set) + __swig_setmethods__["run_dir"] = _sim_services.CommandLineArguments_run_dir_set + __swig_getmethods__["run_dir"] = _sim_services.CommandLineArguments_run_dir_get + if _newclass: + run_dir = _swig_property(_sim_services.CommandLineArguments_run_dir_get, _sim_services.CommandLineArguments_run_dir_set) + __swig_setmethods__["user_output_dir"] = _sim_services.CommandLineArguments_user_output_dir_set + __swig_getmethods__["user_output_dir"] = _sim_services.CommandLineArguments_user_output_dir_get + if _newclass: + user_output_dir = _swig_property(_sim_services.CommandLineArguments_user_output_dir_get, _sim_services.CommandLineArguments_user_output_dir_set) + __swig_setmethods__["time_stamp_dir"] = _sim_services.CommandLineArguments_time_stamp_dir_set + __swig_getmethods__["time_stamp_dir"] = _sim_services.CommandLineArguments_time_stamp_dir_get + if _newclass: + time_stamp_dir = _swig_property(_sim_services.CommandLineArguments_time_stamp_dir_get, _sim_services.CommandLineArguments_time_stamp_dir_set) + __swig_setmethods__["output_dir"] = _sim_services.CommandLineArguments_output_dir_set + __swig_getmethods__["output_dir"] = _sim_services.CommandLineArguments_output_dir_get + if _newclass: + output_dir = _swig_property(_sim_services.CommandLineArguments_output_dir_get, _sim_services.CommandLineArguments_output_dir_set) + __swig_setmethods__["input_file"] = _sim_services.CommandLineArguments_input_file_set + __swig_getmethods__["input_file"] = _sim_services.CommandLineArguments_input_file_get + if _newclass: + input_file = _swig_property(_sim_services.CommandLineArguments_input_file_get, _sim_services.CommandLineArguments_input_file_set) + + def __init__(self, *args): + this = _sim_services.new_CommandLineArguments(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def process_sim_args(self, *args): + return _sim_services.CommandLineArguments_process_sim_args(self, *args) + + def get_argc(self, *args): + return _sim_services.CommandLineArguments_get_argc(self, *args) + + def get_argv(self, *args): + return _sim_services.CommandLineArguments_get_argv(self, *args) + + def get_output_dir(self, *args): + return _sim_services.CommandLineArguments_get_output_dir(self, *args) + + def get_output_dir_ref(self, *args): + return _sim_services.CommandLineArguments_get_output_dir_ref(self, *args) + + def get_user_output_dir(self, *args): + return _sim_services.CommandLineArguments_get_user_output_dir(self, *args) + + def get_user_output_dir_ref(self, *args): + return _sim_services.CommandLineArguments_get_user_output_dir_ref(self, *args) + + def get_input_file(self, *args): + return _sim_services.CommandLineArguments_get_input_file(self, *args) + + def get_input_file_ref(self, *args): + return _sim_services.CommandLineArguments_get_input_file_ref(self, *args) + + def get_default_dir(self, *args): + return _sim_services.CommandLineArguments_get_default_dir(self, *args) + + def get_default_dir_ref(self, *args): + return _sim_services.CommandLineArguments_get_default_dir_ref(self, *args) + + def get_cmdline_name(self, *args): + return _sim_services.CommandLineArguments_get_cmdline_name(self, *args) + + def get_cmdline_name_ref(self, *args): + return _sim_services.CommandLineArguments_get_cmdline_name_ref(self, *args) + + def output_dir_timestamped_on(self, *args): + return _sim_services.CommandLineArguments_output_dir_timestamped_on(self, *args) + + def output_dir_timestamped_off(self, *args): + return _sim_services.CommandLineArguments_output_dir_timestamped_off(self, *args) + + def set_output_dir(self, *args): + return _sim_services.CommandLineArguments_set_output_dir(self, *args) + if _newclass: + create_path = staticmethod(_sim_services.CommandLineArguments_create_path) + else: + create_path = _sim_services.CommandLineArguments_create_path + __swig_destroy__ = _sim_services.delete_CommandLineArguments + __del__ = lambda self: None +CommandLineArguments_swigregister = _sim_services.CommandLineArguments_swigregister +CommandLineArguments_swigregister(CommandLineArguments) + +def CommandLineArguments_create_path(*args): + return _sim_services.CommandLineArguments_create_path(*args) +CommandLineArguments_create_path = _sim_services.CommandLineArguments_create_path + + +def command_line_args_process_sim_args(*args): + return _sim_services.command_line_args_process_sim_args(*args) +command_line_args_process_sim_args = _sim_services.command_line_args_process_sim_args + +def command_line_args_get_argc(*args): + return _sim_services.command_line_args_get_argc(*args) +command_line_args_get_argc = _sim_services.command_line_args_get_argc + +def command_line_args_get_argv(*args): + return _sim_services.command_line_args_get_argv(*args) +command_line_args_get_argv = _sim_services.command_line_args_get_argv + +def command_line_args_get_output_dir(*args): + return _sim_services.command_line_args_get_output_dir(*args) +command_line_args_get_output_dir = _sim_services.command_line_args_get_output_dir + +def command_line_args_get_user_output_dir(*args): + return _sim_services.command_line_args_get_user_output_dir(*args) +command_line_args_get_user_output_dir = _sim_services.command_line_args_get_user_output_dir + +def command_line_args_get_input_file(*args): + return _sim_services.command_line_args_get_input_file(*args) +command_line_args_get_input_file = _sim_services.command_line_args_get_input_file + +def command_line_args_get_default_dir(*args): + return _sim_services.command_line_args_get_default_dir(*args) +command_line_args_get_default_dir = _sim_services.command_line_args_get_default_dir + +def command_line_args_get_cmdline_name(*args): + return _sim_services.command_line_args_get_cmdline_name(*args) +command_line_args_get_cmdline_name = _sim_services.command_line_args_get_cmdline_name + +def output_dir_timestamped_on(*args): + return _sim_services.output_dir_timestamped_on(*args) +output_dir_timestamped_on = _sim_services.output_dir_timestamped_on + +def output_dir_timestamped_off(*args): + return _sim_services.output_dir_timestamped_off(*args) +output_dir_timestamped_off = _sim_services.output_dir_timestamped_off + +def set_output_dir(*args): + return _sim_services.set_output_dir(*args) +set_output_dir = _sim_services.set_output_dir + +def command_line_args_get_input_file_ref(*args): + return _sim_services.command_line_args_get_input_file_ref(*args) +command_line_args_get_input_file_ref = _sim_services.command_line_args_get_input_file_ref + +def create_path(*args): + return _sim_services.create_path(*args) +create_path = _sim_services.create_path +class InstrumentBase(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, InstrumentBase, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, InstrumentBase, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_InstrumentBase + __del__ = lambda self: None + + def get_target_job(self, *args): + return _sim_services.InstrumentBase_get_target_job(self, *args) + __swig_setmethods__["name"] = _sim_services.InstrumentBase_name_set + __swig_getmethods__["name"] = _sim_services.InstrumentBase_name_get + if _newclass: + name = _swig_property(_sim_services.InstrumentBase_name_get, _sim_services.InstrumentBase_name_set) + __swig_setmethods__["phase"] = _sim_services.InstrumentBase_phase_set + __swig_getmethods__["phase"] = _sim_services.InstrumentBase_phase_get + if _newclass: + phase = _swig_property(_sim_services.InstrumentBase_phase_get, _sim_services.InstrumentBase_phase_set) + + def call(self, *args): + return _sim_services.InstrumentBase_call(self, *args) +InstrumentBase_swigregister = _sim_services.InstrumentBase_swigregister +InstrumentBase_swigregister(InstrumentBase) + +class JobData(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, JobData, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, JobData, name) + __repr__ = _swig_repr + __swig_setmethods__["name"] = _sim_services.JobData_name_set + __swig_getmethods__["name"] = _sim_services.JobData_name_get + if _newclass: + name = _swig_property(_sim_services.JobData_name_get, _sim_services.JobData_name_set) + __swig_setmethods__["disabled"] = _sim_services.JobData_disabled_set + __swig_getmethods__["disabled"] = _sim_services.JobData_disabled_get + if _newclass: + disabled = _swig_property(_sim_services.JobData_disabled_get, _sim_services.JobData_disabled_set) + __swig_setmethods__["complete"] = _sim_services.JobData_complete_set + __swig_getmethods__["complete"] = _sim_services.JobData_complete_get + if _newclass: + complete = _swig_property(_sim_services.JobData_complete_get, _sim_services.JobData_complete_set) + __swig_setmethods__["handled"] = _sim_services.JobData_handled_set + __swig_getmethods__["handled"] = _sim_services.JobData_handled_get + if _newclass: + handled = _swig_property(_sim_services.JobData_handled_get, _sim_services.JobData_handled_set) + __swig_setmethods__["cycle"] = _sim_services.JobData_cycle_set + __swig_getmethods__["cycle"] = _sim_services.JobData_cycle_get + if _newclass: + cycle = _swig_property(_sim_services.JobData_cycle_get, _sim_services.JobData_cycle_set) + __swig_setmethods__["start"] = _sim_services.JobData_start_set + __swig_getmethods__["start"] = _sim_services.JobData_start_get + if _newclass: + start = _swig_property(_sim_services.JobData_start_get, _sim_services.JobData_start_set) + __swig_setmethods__["stop"] = _sim_services.JobData_stop_set + __swig_getmethods__["stop"] = _sim_services.JobData_stop_get + if _newclass: + stop = _swig_property(_sim_services.JobData_stop_get, _sim_services.JobData_stop_set) + __swig_setmethods__["sup_class_data"] = _sim_services.JobData_sup_class_data_set + __swig_getmethods__["sup_class_data"] = _sim_services.JobData_sup_class_data_get + if _newclass: + sup_class_data = _swig_property(_sim_services.JobData_sup_class_data_get, _sim_services.JobData_sup_class_data_set) + __swig_setmethods__["job_class"] = _sim_services.JobData_job_class_set + __swig_getmethods__["job_class"] = _sim_services.JobData_job_class_get + if _newclass: + job_class = _swig_property(_sim_services.JobData_job_class_get, _sim_services.JobData_job_class_set) + __swig_setmethods__["job_class_name"] = _sim_services.JobData_job_class_name_set + __swig_getmethods__["job_class_name"] = _sim_services.JobData_job_class_name_get + if _newclass: + job_class_name = _swig_property(_sim_services.JobData_job_class_name_get, _sim_services.JobData_job_class_name_set) + __swig_setmethods__["system_job_class"] = _sim_services.JobData_system_job_class_set + __swig_getmethods__["system_job_class"] = _sim_services.JobData_system_job_class_get + if _newclass: + system_job_class = _swig_property(_sim_services.JobData_system_job_class_get, _sim_services.JobData_system_job_class_set) + __swig_setmethods__["phase"] = _sim_services.JobData_phase_set + __swig_getmethods__["phase"] = _sim_services.JobData_phase_get + if _newclass: + phase = _swig_property(_sim_services.JobData_phase_get, _sim_services.JobData_phase_set) + __swig_setmethods__["tags"] = _sim_services.JobData_tags_set + __swig_getmethods__["tags"] = _sim_services.JobData_tags_get + if _newclass: + tags = _swig_property(_sim_services.JobData_tags_get, _sim_services.JobData_tags_set) + + def tags_begin(self, *args): + return _sim_services.JobData_tags_begin(self, *args) + + def tags_end(self, *args): + return _sim_services.JobData_tags_end(self, *args) + __swig_setmethods__["rt_start_time"] = _sim_services.JobData_rt_start_time_set + __swig_getmethods__["rt_start_time"] = _sim_services.JobData_rt_start_time_get + if _newclass: + rt_start_time = _swig_property(_sim_services.JobData_rt_start_time_get, _sim_services.JobData_rt_start_time_set) + __swig_setmethods__["rt_stop_time"] = _sim_services.JobData_rt_stop_time_set + __swig_getmethods__["rt_stop_time"] = _sim_services.JobData_rt_stop_time_get + if _newclass: + rt_stop_time = _swig_property(_sim_services.JobData_rt_stop_time_get, _sim_services.JobData_rt_stop_time_set) + __swig_setmethods__["frame_time"] = _sim_services.JobData_frame_time_set + __swig_getmethods__["frame_time"] = _sim_services.JobData_frame_time_get + if _newclass: + frame_time = _swig_property(_sim_services.JobData_frame_time_get, _sim_services.JobData_frame_time_set) + __swig_setmethods__["frame_id"] = _sim_services.JobData_frame_id_set + __swig_getmethods__["frame_id"] = _sim_services.JobData_frame_id_get + if _newclass: + frame_id = _swig_property(_sim_services.JobData_frame_id_get, _sim_services.JobData_frame_id_set) + __swig_setmethods__["thread"] = _sim_services.JobData_thread_set + __swig_getmethods__["thread"] = _sim_services.JobData_thread_get + if _newclass: + thread = _swig_property(_sim_services.JobData_thread_get, _sim_services.JobData_thread_set) + __swig_setmethods__["id"] = _sim_services.JobData_id_set + __swig_getmethods__["id"] = _sim_services.JobData_id_get + if _newclass: + id = _swig_property(_sim_services.JobData_id_get, _sim_services.JobData_id_set) + __swig_setmethods__["sim_object_id"] = _sim_services.JobData_sim_object_id_set + __swig_getmethods__["sim_object_id"] = _sim_services.JobData_sim_object_id_get + if _newclass: + sim_object_id = _swig_property(_sim_services.JobData_sim_object_id_get, _sim_services.JobData_sim_object_id_set) + __swig_setmethods__["parent_object"] = _sim_services.JobData_parent_object_set + __swig_getmethods__["parent_object"] = _sim_services.JobData_parent_object_get + if _newclass: + parent_object = _swig_property(_sim_services.JobData_parent_object_get, _sim_services.JobData_parent_object_set) + __swig_setmethods__["depends"] = _sim_services.JobData_depends_set + __swig_getmethods__["depends"] = _sim_services.JobData_depends_get + if _newclass: + depends = _swig_property(_sim_services.JobData_depends_get, _sim_services.JobData_depends_set) + __swig_setmethods__["inst_before"] = _sim_services.JobData_inst_before_set + __swig_getmethods__["inst_before"] = _sim_services.JobData_inst_before_get + if _newclass: + inst_before = _swig_property(_sim_services.JobData_inst_before_get, _sim_services.JobData_inst_before_set) + __swig_setmethods__["inst_after"] = _sim_services.JobData_inst_after_set + __swig_getmethods__["inst_after"] = _sim_services.JobData_inst_after_get + if _newclass: + inst_after = _swig_property(_sim_services.JobData_inst_after_get, _sim_services.JobData_inst_after_set) + __swig_setmethods__["cycle_tics"] = _sim_services.JobData_cycle_tics_set + __swig_getmethods__["cycle_tics"] = _sim_services.JobData_cycle_tics_get + if _newclass: + cycle_tics = _swig_property(_sim_services.JobData_cycle_tics_get, _sim_services.JobData_cycle_tics_set) + __swig_setmethods__["start_tics"] = _sim_services.JobData_start_tics_set + __swig_getmethods__["start_tics"] = _sim_services.JobData_start_tics_get + if _newclass: + start_tics = _swig_property(_sim_services.JobData_start_tics_get, _sim_services.JobData_start_tics_set) + __swig_setmethods__["stop_tics"] = _sim_services.JobData_stop_tics_set + __swig_getmethods__["stop_tics"] = _sim_services.JobData_stop_tics_get + if _newclass: + stop_tics = _swig_property(_sim_services.JobData_stop_tics_get, _sim_services.JobData_stop_tics_set) + __swig_setmethods__["next_tics"] = _sim_services.JobData_next_tics_set + __swig_getmethods__["next_tics"] = _sim_services.JobData_next_tics_get + if _newclass: + next_tics = _swig_property(_sim_services.JobData_next_tics_get, _sim_services.JobData_next_tics_set) + __swig_setmethods__["time_tic_value"] = _sim_services.JobData_time_tic_value_set + __swig_getmethods__["time_tic_value"] = _sim_services.JobData_time_tic_value_get + if _newclass: + time_tic_value = _swig_property(_sim_services.JobData_time_tic_value_get, _sim_services.JobData_time_tic_value_set) + + def __init__(self, *args): + this = _sim_services.new_JobData(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_JobData + __del__ = lambda self: None + + def get_handled(self, *args): + return _sim_services.JobData_get_handled(self, *args) + + def enable(self, *args): + return _sim_services.JobData_enable(self, *args) + + def disable(self, *args): + return _sim_services.JobData_disable(self, *args) + + def set_handled(self, *args): + return _sim_services.JobData_set_handled(self, *args) + if _newclass: + set_time_tic_value = staticmethod(_sim_services.JobData_set_time_tic_value) + else: + set_time_tic_value = _sim_services.JobData_set_time_tic_value + + def set_cycle(self, *args): + return _sim_services.JobData_set_cycle(self, *args) + + def calc_cycle_tics(self, *args): + return _sim_services.JobData_calc_cycle_tics(self, *args) + + def set_next_call_time(self, *args): + return _sim_services.JobData_set_next_call_time(self, *args) + + def set_system_job_class(self, *args): + return _sim_services.JobData_set_system_job_class(self, *args) + + def add_tag(self, *args): + return _sim_services.JobData_add_tag(self, *args) + + def add_depend(self, *args): + return _sim_services.JobData_add_depend(self, *args) + + def add_inst_before(self, *args): + return _sim_services.JobData_add_inst_before(self, *args) + + def add_inst_after(self, *args): + return _sim_services.JobData_add_inst_after(self, *args) + + def remove_inst(self, *args): + return _sim_services.JobData_remove_inst(self, *args) + + def call(self, *args): + return _sim_services.JobData_call(self, *args) + + def call_double(self, *args): + return _sim_services.JobData_call_double(self, *args) + + def copy_from_checkpoint(self, *args): + return _sim_services.JobData_copy_from_checkpoint(self, *args) +JobData_swigregister = _sim_services.JobData_swigregister +JobData_swigregister(JobData) + +def JobData_set_time_tic_value(*args): + return _sim_services.JobData_set_time_tic_value(*args) +JobData_set_time_tic_value = _sim_services.JobData_set_time_tic_value + +class SimObject(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SimObject, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SimObject, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_setmethods__["name"] = _sim_services.SimObject_name_set + __swig_getmethods__["name"] = _sim_services.SimObject_name_get + if _newclass: + name = _swig_property(_sim_services.SimObject_name_get, _sim_services.SimObject_name_set) + __swig_setmethods__["id"] = _sim_services.SimObject_id_set + __swig_getmethods__["id"] = _sim_services.SimObject_id_get + if _newclass: + id = _swig_property(_sim_services.SimObject_id_get, _sim_services.SimObject_id_set) + __swig_setmethods__["object_disabled"] = _sim_services.SimObject_object_disabled_set + __swig_getmethods__["object_disabled"] = _sim_services.SimObject_object_disabled_get + if _newclass: + object_disabled = _swig_property(_sim_services.SimObject_object_disabled_get, _sim_services.SimObject_object_disabled_set) + __swig_setmethods__["saved_job_states"] = _sim_services.SimObject_saved_job_states_set + __swig_getmethods__["saved_job_states"] = _sim_services.SimObject_saved_job_states_get + if _newclass: + saved_job_states = _swig_property(_sim_services.SimObject_saved_job_states_get, _sim_services.SimObject_saved_job_states_set) + __swig_setmethods__["pre_component_objects"] = _sim_services.SimObject_pre_component_objects_set + __swig_getmethods__["pre_component_objects"] = _sim_services.SimObject_pre_component_objects_get + if _newclass: + pre_component_objects = _swig_property(_sim_services.SimObject_pre_component_objects_get, _sim_services.SimObject_pre_component_objects_set) + __swig_setmethods__["post_component_objects"] = _sim_services.SimObject_post_component_objects_set + __swig_getmethods__["post_component_objects"] = _sim_services.SimObject_post_component_objects_get + if _newclass: + post_component_objects = _swig_property(_sim_services.SimObject_post_component_objects_get, _sim_services.SimObject_post_component_objects_set) + __swig_setmethods__["jobs"] = _sim_services.SimObject_jobs_set + __swig_getmethods__["jobs"] = _sim_services.SimObject_jobs_get + if _newclass: + jobs = _swig_property(_sim_services.SimObject_jobs_get, _sim_services.SimObject_jobs_set) + __swig_destroy__ = _sim_services.delete_SimObject + __del__ = lambda self: None + + def get_job(self, *args): + return _sim_services.SimObject_get_job(self, *args) + + def add_tag(self, *args): + return _sim_services.SimObject_add_tag(self, *args) + + def add_tag_to_job(self, *args): + return _sim_services.SimObject_add_tag_to_job(self, *args) + + def add_pre_component_object(self, *args): + return _sim_services.SimObject_add_pre_component_object(self, *args) + + def add_post_component_object(self, *args): + return _sim_services.SimObject_add_post_component_object(self, *args) + + def add_job(self, *args): + return _sim_services.SimObject_add_job(self, *args) + + def enable_all_jobs(self, *args): + return _sim_services.SimObject_enable_all_jobs(self, *args) + + def enable(self, *args): + return _sim_services.SimObject_enable(self, *args) + + def disable_all_jobs(self, *args): + return _sim_services.SimObject_disable_all_jobs(self, *args) + + def disable(self, *args): + return _sim_services.SimObject_disable(self, *args) + + def call_function(self, *args): + return _sim_services.SimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _sim_services.SimObject_call_function_double(self, *args) +SimObject_swigregister = _sim_services.SimObject_swigregister +SimObject_swigregister(SimObject) + +TRICK_VOID = _sim_services.TRICK_VOID +TRICK_CHARACTER = _sim_services.TRICK_CHARACTER +TRICK_UNSIGNED_CHARACTER = _sim_services.TRICK_UNSIGNED_CHARACTER +TRICK_STRING = _sim_services.TRICK_STRING +TRICK_SHORT = _sim_services.TRICK_SHORT +TRICK_UNSIGNED_SHORT = _sim_services.TRICK_UNSIGNED_SHORT +TRICK_INTEGER = _sim_services.TRICK_INTEGER +TRICK_UNSIGNED_INTEGER = _sim_services.TRICK_UNSIGNED_INTEGER +TRICK_LONG = _sim_services.TRICK_LONG +TRICK_UNSIGNED_LONG = _sim_services.TRICK_UNSIGNED_LONG +TRICK_FLOAT = _sim_services.TRICK_FLOAT +TRICK_DOUBLE = _sim_services.TRICK_DOUBLE +TRICK_BITFIELD = _sim_services.TRICK_BITFIELD +TRICK_UNSIGNED_BITFIELD = _sim_services.TRICK_UNSIGNED_BITFIELD +TRICK_LONG_LONG = _sim_services.TRICK_LONG_LONG +TRICK_UNSIGNED_LONG_LONG = _sim_services.TRICK_UNSIGNED_LONG_LONG +TRICK_FILE_PTR = _sim_services.TRICK_FILE_PTR +TRICK_BOOLEAN = _sim_services.TRICK_BOOLEAN +TRICK_WCHAR = _sim_services.TRICK_WCHAR +TRICK_WSTRING = _sim_services.TRICK_WSTRING +TRICK_VOID_PTR = _sim_services.TRICK_VOID_PTR +TRICK_ENUMERATED = _sim_services.TRICK_ENUMERATED +TRICK_STRUCTURED = _sim_services.TRICK_STRUCTURED +TRICK_OPAQUE_TYPE = _sim_services.TRICK_OPAQUE_TYPE +TRICK_STL = _sim_services.TRICK_STL +TRICK_NUMBER_OF_TYPES = _sim_services.TRICK_NUMBER_OF_TYPES + +def trickTypeCharString(*args): + return _sim_services.trickTypeCharString(*args) +trickTypeCharString = _sim_services.trickTypeCharString +TRICK_VAR_OUTPUT = _sim_services.TRICK_VAR_OUTPUT +TRICK_VAR_INPUT = _sim_services.TRICK_VAR_INPUT +TRICK_CHKPNT_OUTPUT = _sim_services.TRICK_CHKPNT_OUTPUT +TRICK_CHKPNT_INPUT = _sim_services.TRICK_CHKPNT_INPUT +TRICK_MODS_UNITSDASHDASH = _sim_services.TRICK_MODS_UNITSDASHDASH +TRICK_MAX_INDEX = _sim_services.TRICK_MAX_INDEX +Language_C = _sim_services.Language_C +Language_CPP = _sim_services.Language_CPP +class ENUM_ATTR(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ENUM_ATTR, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ENUM_ATTR, name) + __repr__ = _swig_repr + __swig_setmethods__["label"] = _sim_services.ENUM_ATTR_label_set + __swig_getmethods__["label"] = _sim_services.ENUM_ATTR_label_get + if _newclass: + label = _swig_property(_sim_services.ENUM_ATTR_label_get, _sim_services.ENUM_ATTR_label_set) + __swig_setmethods__["value"] = _sim_services.ENUM_ATTR_value_set + __swig_getmethods__["value"] = _sim_services.ENUM_ATTR_value_get + if _newclass: + value = _swig_property(_sim_services.ENUM_ATTR_value_get, _sim_services.ENUM_ATTR_value_set) + __swig_setmethods__["mods"] = _sim_services.ENUM_ATTR_mods_set + __swig_getmethods__["mods"] = _sim_services.ENUM_ATTR_mods_get + if _newclass: + mods = _swig_property(_sim_services.ENUM_ATTR_mods_get, _sim_services.ENUM_ATTR_mods_set) + + def __init__(self): + this = _sim_services.new_ENUM_ATTR() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ENUM_ATTR + __del__ = lambda self: None +ENUM_ATTR_swigregister = _sim_services.ENUM_ATTR_swigregister +ENUM_ATTR_swigregister(ENUM_ATTR) + +class INDEX(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, INDEX, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, INDEX, name) + __repr__ = _swig_repr + __swig_setmethods__["size"] = _sim_services.INDEX_size_set + __swig_getmethods__["size"] = _sim_services.INDEX_size_get + if _newclass: + size = _swig_property(_sim_services.INDEX_size_get, _sim_services.INDEX_size_set) + __swig_setmethods__["start"] = _sim_services.INDEX_start_set + __swig_getmethods__["start"] = _sim_services.INDEX_start_get + if _newclass: + start = _swig_property(_sim_services.INDEX_start_get, _sim_services.INDEX_start_set) + + def __init__(self): + this = _sim_services.new_INDEX() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_INDEX + __del__ = lambda self: None +INDEX_swigregister = _sim_services.INDEX_swigregister +INDEX_swigregister(INDEX) + +class ATTRIBUTES(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ATTRIBUTES, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ATTRIBUTES, name) + __repr__ = _swig_repr + __swig_setmethods__["name"] = _sim_services.ATTRIBUTES_name_set + __swig_getmethods__["name"] = _sim_services.ATTRIBUTES_name_get + if _newclass: + name = _swig_property(_sim_services.ATTRIBUTES_name_get, _sim_services.ATTRIBUTES_name_set) + __swig_setmethods__["type_name"] = _sim_services.ATTRIBUTES_type_name_set + __swig_getmethods__["type_name"] = _sim_services.ATTRIBUTES_type_name_get + if _newclass: + type_name = _swig_property(_sim_services.ATTRIBUTES_type_name_get, _sim_services.ATTRIBUTES_type_name_set) + __swig_setmethods__["units"] = _sim_services.ATTRIBUTES_units_set + __swig_getmethods__["units"] = _sim_services.ATTRIBUTES_units_get + if _newclass: + units = _swig_property(_sim_services.ATTRIBUTES_units_get, _sim_services.ATTRIBUTES_units_set) + __swig_setmethods__["alias"] = _sim_services.ATTRIBUTES_alias_set + __swig_getmethods__["alias"] = _sim_services.ATTRIBUTES_alias_get + if _newclass: + alias = _swig_property(_sim_services.ATTRIBUTES_alias_get, _sim_services.ATTRIBUTES_alias_set) + __swig_setmethods__["user_defined"] = _sim_services.ATTRIBUTES_user_defined_set + __swig_getmethods__["user_defined"] = _sim_services.ATTRIBUTES_user_defined_get + if _newclass: + user_defined = _swig_property(_sim_services.ATTRIBUTES_user_defined_get, _sim_services.ATTRIBUTES_user_defined_set) + __swig_setmethods__["des"] = _sim_services.ATTRIBUTES_des_set + __swig_getmethods__["des"] = _sim_services.ATTRIBUTES_des_get + if _newclass: + des = _swig_property(_sim_services.ATTRIBUTES_des_get, _sim_services.ATTRIBUTES_des_set) + __swig_setmethods__["io"] = _sim_services.ATTRIBUTES_io_set + __swig_getmethods__["io"] = _sim_services.ATTRIBUTES_io_get + if _newclass: + io = _swig_property(_sim_services.ATTRIBUTES_io_get, _sim_services.ATTRIBUTES_io_set) + __swig_setmethods__["type"] = _sim_services.ATTRIBUTES_type_set + __swig_getmethods__["type"] = _sim_services.ATTRIBUTES_type_get + if _newclass: + type = _swig_property(_sim_services.ATTRIBUTES_type_get, _sim_services.ATTRIBUTES_type_set) + __swig_setmethods__["size"] = _sim_services.ATTRIBUTES_size_set + __swig_getmethods__["size"] = _sim_services.ATTRIBUTES_size_get + if _newclass: + size = _swig_property(_sim_services.ATTRIBUTES_size_get, _sim_services.ATTRIBUTES_size_set) + __swig_setmethods__["range_min"] = _sim_services.ATTRIBUTES_range_min_set + __swig_getmethods__["range_min"] = _sim_services.ATTRIBUTES_range_min_get + if _newclass: + range_min = _swig_property(_sim_services.ATTRIBUTES_range_min_get, _sim_services.ATTRIBUTES_range_min_set) + __swig_setmethods__["range_max"] = _sim_services.ATTRIBUTES_range_max_set + __swig_getmethods__["range_max"] = _sim_services.ATTRIBUTES_range_max_get + if _newclass: + range_max = _swig_property(_sim_services.ATTRIBUTES_range_max_get, _sim_services.ATTRIBUTES_range_max_set) + __swig_setmethods__["language"] = _sim_services.ATTRIBUTES_language_set + __swig_getmethods__["language"] = _sim_services.ATTRIBUTES_language_get + if _newclass: + language = _swig_property(_sim_services.ATTRIBUTES_language_get, _sim_services.ATTRIBUTES_language_set) + __swig_setmethods__["mods"] = _sim_services.ATTRIBUTES_mods_set + __swig_getmethods__["mods"] = _sim_services.ATTRIBUTES_mods_get + if _newclass: + mods = _swig_property(_sim_services.ATTRIBUTES_mods_get, _sim_services.ATTRIBUTES_mods_set) + __swig_setmethods__["offset"] = _sim_services.ATTRIBUTES_offset_set + __swig_getmethods__["offset"] = _sim_services.ATTRIBUTES_offset_get + if _newclass: + offset = _swig_property(_sim_services.ATTRIBUTES_offset_get, _sim_services.ATTRIBUTES_offset_set) + __swig_setmethods__["attr"] = _sim_services.ATTRIBUTES_attr_set + __swig_getmethods__["attr"] = _sim_services.ATTRIBUTES_attr_get + if _newclass: + attr = _swig_property(_sim_services.ATTRIBUTES_attr_get, _sim_services.ATTRIBUTES_attr_set) + __swig_setmethods__["num_index"] = _sim_services.ATTRIBUTES_num_index_set + __swig_getmethods__["num_index"] = _sim_services.ATTRIBUTES_num_index_get + if _newclass: + num_index = _swig_property(_sim_services.ATTRIBUTES_num_index_get, _sim_services.ATTRIBUTES_num_index_set) + __swig_setmethods__["index"] = _sim_services.ATTRIBUTES_index_set + __swig_getmethods__["index"] = _sim_services.ATTRIBUTES_index_get + if _newclass: + index = _swig_property(_sim_services.ATTRIBUTES_index_get, _sim_services.ATTRIBUTES_index_set) + __swig_setmethods__["checkpoint_stl"] = _sim_services.ATTRIBUTES_checkpoint_stl_set + __swig_getmethods__["checkpoint_stl"] = _sim_services.ATTRIBUTES_checkpoint_stl_get + if _newclass: + checkpoint_stl = _swig_property(_sim_services.ATTRIBUTES_checkpoint_stl_get, _sim_services.ATTRIBUTES_checkpoint_stl_set) + __swig_setmethods__["post_checkpoint_stl"] = _sim_services.ATTRIBUTES_post_checkpoint_stl_set + __swig_getmethods__["post_checkpoint_stl"] = _sim_services.ATTRIBUTES_post_checkpoint_stl_get + if _newclass: + post_checkpoint_stl = _swig_property(_sim_services.ATTRIBUTES_post_checkpoint_stl_get, _sim_services.ATTRIBUTES_post_checkpoint_stl_set) + __swig_setmethods__["restore_stl"] = _sim_services.ATTRIBUTES_restore_stl_set + __swig_getmethods__["restore_stl"] = _sim_services.ATTRIBUTES_restore_stl_get + if _newclass: + restore_stl = _swig_property(_sim_services.ATTRIBUTES_restore_stl_get, _sim_services.ATTRIBUTES_restore_stl_set) + __swig_setmethods__["clear_stl"] = _sim_services.ATTRIBUTES_clear_stl_set + __swig_getmethods__["clear_stl"] = _sim_services.ATTRIBUTES_clear_stl_get + if _newclass: + clear_stl = _swig_property(_sim_services.ATTRIBUTES_clear_stl_get, _sim_services.ATTRIBUTES_clear_stl_set) + + def __init__(self): + this = _sim_services.new_ATTRIBUTES() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ATTRIBUTES + __del__ = lambda self: None +ATTRIBUTES_swigregister = _sim_services.ATTRIBUTES_swigregister +ATTRIBUTES_swigregister(ATTRIBUTES) + +class ENUM_LIST(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ENUM_LIST, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ENUM_LIST, name) + __repr__ = _swig_repr + __swig_setmethods__["type_name"] = _sim_services.ENUM_LIST_type_name_set + __swig_getmethods__["type_name"] = _sim_services.ENUM_LIST_type_name_get + if _newclass: + type_name = _swig_property(_sim_services.ENUM_LIST_type_name_get, _sim_services.ENUM_LIST_type_name_set) + __swig_setmethods__["E"] = _sim_services.ENUM_LIST_E_set + __swig_getmethods__["E"] = _sim_services.ENUM_LIST_E_get + if _newclass: + E = _swig_property(_sim_services.ENUM_LIST_E_get, _sim_services.ENUM_LIST_E_set) + + def __init__(self): + this = _sim_services.new_ENUM_LIST() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ENUM_LIST + __del__ = lambda self: None +ENUM_LIST_swigregister = _sim_services.ENUM_LIST_swigregister +ENUM_LIST_swigregister(ENUM_LIST) + +class NAME_TO_ATTR(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, NAME_TO_ATTR, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, NAME_TO_ATTR, name) + __repr__ = _swig_repr + __swig_setmethods__["name"] = _sim_services.NAME_TO_ATTR_name_set + __swig_getmethods__["name"] = _sim_services.NAME_TO_ATTR_name_get + if _newclass: + name = _swig_property(_sim_services.NAME_TO_ATTR_name_get, _sim_services.NAME_TO_ATTR_name_set) + __swig_setmethods__["attr"] = _sim_services.NAME_TO_ATTR_attr_set + __swig_getmethods__["attr"] = _sim_services.NAME_TO_ATTR_attr_get + if _newclass: + attr = _swig_property(_sim_services.NAME_TO_ATTR_attr_get, _sim_services.NAME_TO_ATTR_attr_set) + __swig_setmethods__["size"] = _sim_services.NAME_TO_ATTR_size_set + __swig_getmethods__["size"] = _sim_services.NAME_TO_ATTR_size_get + if _newclass: + size = _swig_property(_sim_services.NAME_TO_ATTR_size_get, _sim_services.NAME_TO_ATTR_size_set) + + def __init__(self): + this = _sim_services.new_NAME_TO_ATTR() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_NAME_TO_ATTR + __del__ = lambda self: None +NAME_TO_ATTR_swigregister = _sim_services.NAME_TO_ATTR_swigregister +NAME_TO_ATTR_swigregister(NAME_TO_ATTR) + +class EQUIV_ATTRIBUTES(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, EQUIV_ATTRIBUTES, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, EQUIV_ATTRIBUTES, name) + __repr__ = _swig_repr + __swig_setmethods__["attr"] = _sim_services.EQUIV_ATTRIBUTES_attr_set + __swig_getmethods__["attr"] = _sim_services.EQUIV_ATTRIBUTES_attr_get + if _newclass: + attr = _swig_property(_sim_services.EQUIV_ATTRIBUTES_attr_get, _sim_services.EQUIV_ATTRIBUTES_attr_set) + __swig_setmethods__["base"] = _sim_services.EQUIV_ATTRIBUTES_base_set + __swig_getmethods__["base"] = _sim_services.EQUIV_ATTRIBUTES_base_get + if _newclass: + base = _swig_property(_sim_services.EQUIV_ATTRIBUTES_base_get, _sim_services.EQUIV_ATTRIBUTES_base_set) + + def __init__(self): + this = _sim_services.new_EQUIV_ATTRIBUTES() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_EQUIV_ATTRIBUTES + __del__ = lambda self: None +EQUIV_ATTRIBUTES_swigregister = _sim_services.EQUIV_ATTRIBUTES_swigregister +EQUIV_ATTRIBUTES_swigregister(EQUIV_ATTRIBUTES) + +MAX_VALUE = _sim_services.MAX_VALUE +class VALUE(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VALUE, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VALUE, name) + __repr__ = _swig_repr + __swig_setmethods__["c"] = _sim_services.VALUE_c_set + __swig_getmethods__["c"] = _sim_services.VALUE_c_get + if _newclass: + c = _swig_property(_sim_services.VALUE_c_get, _sim_services.VALUE_c_set) + __swig_setmethods__["cp"] = _sim_services.VALUE_cp_set + __swig_getmethods__["cp"] = _sim_services.VALUE_cp_get + if _newclass: + cp = _swig_property(_sim_services.VALUE_cp_get, _sim_services.VALUE_cp_set) + __swig_setmethods__["s"] = _sim_services.VALUE_s_set + __swig_getmethods__["s"] = _sim_services.VALUE_s_get + if _newclass: + s = _swig_property(_sim_services.VALUE_s_get, _sim_services.VALUE_s_set) + __swig_setmethods__["fp"] = _sim_services.VALUE_fp_set + __swig_getmethods__["fp"] = _sim_services.VALUE_fp_get + if _newclass: + fp = _swig_property(_sim_services.VALUE_fp_get, _sim_services.VALUE_fp_set) + __swig_setmethods__["i"] = _sim_services.VALUE_i_set + __swig_getmethods__["i"] = _sim_services.VALUE_i_get + if _newclass: + i = _swig_property(_sim_services.VALUE_i_get, _sim_services.VALUE_i_set) + __swig_setmethods__["l"] = _sim_services.VALUE_l_set + __swig_getmethods__["l"] = _sim_services.VALUE_l_get + if _newclass: + l = _swig_property(_sim_services.VALUE_l_get, _sim_services.VALUE_l_set) + __swig_setmethods__["f"] = _sim_services.VALUE_f_set + __swig_getmethods__["f"] = _sim_services.VALUE_f_get + if _newclass: + f = _swig_property(_sim_services.VALUE_f_get, _sim_services.VALUE_f_set) + __swig_setmethods__["d"] = _sim_services.VALUE_d_set + __swig_getmethods__["d"] = _sim_services.VALUE_d_get + if _newclass: + d = _swig_property(_sim_services.VALUE_d_get, _sim_services.VALUE_d_set) + __swig_setmethods__["ll"] = _sim_services.VALUE_ll_set + __swig_getmethods__["ll"] = _sim_services.VALUE_ll_get + if _newclass: + ll = _swig_property(_sim_services.VALUE_ll_get, _sim_services.VALUE_ll_set) + __swig_setmethods__["vp"] = _sim_services.VALUE_vp_set + __swig_getmethods__["vp"] = _sim_services.VALUE_vp_get + if _newclass: + vp = _swig_property(_sim_services.VALUE_vp_get, _sim_services.VALUE_vp_set) + + def __init__(self): + this = _sim_services.new_VALUE() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VALUE + __del__ = lambda self: None +VALUE_swigregister = _sim_services.VALUE_swigregister +VALUE_swigregister(VALUE) + +class V_DATA(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, V_DATA, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, V_DATA, name) + __repr__ = _swig_repr + __swig_setmethods__["type"] = _sim_services.V_DATA_type_set + __swig_getmethods__["type"] = _sim_services.V_DATA_type_get + if _newclass: + type = _swig_property(_sim_services.V_DATA_type_get, _sim_services.V_DATA_type_set) + __swig_setmethods__["value"] = _sim_services.V_DATA_value_set + __swig_getmethods__["value"] = _sim_services.V_DATA_value_get + if _newclass: + value = _swig_property(_sim_services.V_DATA_value_get, _sim_services.V_DATA_value_set) + + def __init__(self): + this = _sim_services.new_V_DATA() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_V_DATA + __del__ = lambda self: None +V_DATA_swigregister = _sim_services.V_DATA_swigregister +V_DATA_swigregister(V_DATA) + +class VALUE_LIST(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VALUE_LIST, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VALUE_LIST, name) + __repr__ = _swig_repr + __swig_setmethods__["num_val"] = _sim_services.VALUE_LIST_num_val_set + __swig_getmethods__["num_val"] = _sim_services.VALUE_LIST_num_val_get + if _newclass: + num_val = _swig_property(_sim_services.VALUE_LIST_num_val_get, _sim_services.VALUE_LIST_num_val_set) + __swig_setmethods__["v_data"] = _sim_services.VALUE_LIST_v_data_set + __swig_getmethods__["v_data"] = _sim_services.VALUE_LIST_v_data_get + if _newclass: + v_data = _swig_property(_sim_services.VALUE_LIST_v_data_get, _sim_services.VALUE_LIST_v_data_set) + + def __init__(self): + this = _sim_services.new_VALUE_LIST() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VALUE_LIST + __del__ = lambda self: None +VALUE_LIST_swigregister = _sim_services.VALUE_LIST_swigregister +VALUE_LIST_swigregister(VALUE_LIST) + +class V_TREE(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, V_TREE, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, V_TREE, name) + __repr__ = _swig_repr + __swig_setmethods__["last"] = _sim_services.V_TREE_last_set + __swig_getmethods__["last"] = _sim_services.V_TREE_last_get + if _newclass: + last = _swig_property(_sim_services.V_TREE_last_get, _sim_services.V_TREE_last_set) + __swig_setmethods__["next"] = _sim_services.V_TREE_next_set + __swig_getmethods__["next"] = _sim_services.V_TREE_next_get + if _newclass: + next = _swig_property(_sim_services.V_TREE_next_get, _sim_services.V_TREE_next_set) + __swig_setmethods__["down"] = _sim_services.V_TREE_down_set + __swig_getmethods__["down"] = _sim_services.V_TREE_down_get + if _newclass: + down = _swig_property(_sim_services.V_TREE_down_get, _sim_services.V_TREE_down_set) + __swig_setmethods__["v_data"] = _sim_services.V_TREE_v_data_set + __swig_getmethods__["v_data"] = _sim_services.V_TREE_v_data_get + if _newclass: + v_data = _swig_property(_sim_services.V_TREE_v_data_get, _sim_services.V_TREE_v_data_set) + + def __init__(self): + this = _sim_services.new_V_TREE() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_V_TREE + __del__ = lambda self: None +V_TREE_swigregister = _sim_services.V_TREE_swigregister +V_TREE_swigregister(V_TREE) + +class DLLNODE(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DLLNODE, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DLLNODE, name) + __repr__ = _swig_repr + __swig_setmethods__["info"] = _sim_services.DLLNODE_info_set + __swig_getmethods__["info"] = _sim_services.DLLNODE_info_get + if _newclass: + info = _swig_property(_sim_services.DLLNODE_info_get, _sim_services.DLLNODE_info_set) + __swig_setmethods__["prev"] = _sim_services.DLLNODE_prev_set + __swig_getmethods__["prev"] = _sim_services.DLLNODE_prev_get + if _newclass: + prev = _swig_property(_sim_services.DLLNODE_prev_get, _sim_services.DLLNODE_prev_set) + __swig_setmethods__["next"] = _sim_services.DLLNODE_next_set + __swig_getmethods__["next"] = _sim_services.DLLNODE_next_get + if _newclass: + next = _swig_property(_sim_services.DLLNODE_next_get, _sim_services.DLLNODE_next_set) + + def __init__(self): + this = _sim_services.new_DLLNODE() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_DLLNODE + __del__ = lambda self: None +DLLNODE_swigregister = _sim_services.DLLNODE_swigregister +DLLNODE_swigregister(DLLNODE) + +class DLLIST(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DLLIST, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DLLIST, name) + __repr__ = _swig_repr + __swig_setmethods__["count"] = _sim_services.DLLIST_count_set + __swig_getmethods__["count"] = _sim_services.DLLIST_count_get + if _newclass: + count = _swig_property(_sim_services.DLLIST_count_get, _sim_services.DLLIST_count_set) + __swig_setmethods__["head"] = _sim_services.DLLIST_head_set + __swig_getmethods__["head"] = _sim_services.DLLIST_head_get + if _newclass: + head = _swig_property(_sim_services.DLLIST_head_get, _sim_services.DLLIST_head_set) + __swig_setmethods__["tail"] = _sim_services.DLLIST_tail_set + __swig_getmethods__["tail"] = _sim_services.DLLIST_tail_get + if _newclass: + tail = _swig_property(_sim_services.DLLIST_tail_get, _sim_services.DLLIST_tail_set) + __swig_setmethods__["compare"] = _sim_services.DLLIST_compare_set + __swig_getmethods__["compare"] = _sim_services.DLLIST_compare_get + if _newclass: + compare = _swig_property(_sim_services.DLLIST_compare_get, _sim_services.DLLIST_compare_set) + + def __init__(self): + this = _sim_services.new_DLLIST() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_DLLIST + __del__ = lambda self: None +DLLIST_swigregister = _sim_services.DLLIST_swigregister +DLLIST_swigregister(DLLIST) + + +def DLL_Create(*args): + return _sim_services.DLL_Create(*args) +DLL_Create = _sim_services.DLL_Create + +def DLL_Delete(*args): + return _sim_services.DLL_Delete(*args) +DLL_Delete = _sim_services.DLL_Delete + +def DLL_Init(*args): + return _sim_services.DLL_Init(*args) +DLL_Init = _sim_services.DLL_Init + +def DLL_GetCount(*args): + return _sim_services.DLL_GetCount(*args) +DLL_GetCount = _sim_services.DLL_GetCount + +def DLL_Find(*args): + return _sim_services.DLL_Find(*args) +DLL_Find = _sim_services.DLL_Find + +def DLL_FindPos(*args): + return _sim_services.DLL_FindPos(*args) +DLL_FindPos = _sim_services.DLL_FindPos + +def DLL_FindIndex(*args): + return _sim_services.DLL_FindIndex(*args) +DLL_FindIndex = _sim_services.DLL_FindIndex + +def DLL_GetAt(*args): + return _sim_services.DLL_GetAt(*args) +DLL_GetAt = _sim_services.DLL_GetAt + +def DLL_SetAt(*args): + return _sim_services.DLL_SetAt(*args) +DLL_SetAt = _sim_services.DLL_SetAt + +def DLL_RemoveAt(*args): + return _sim_services.DLL_RemoveAt(*args) +DLL_RemoveAt = _sim_services.DLL_RemoveAt + +def DLL_RemoveAll(*args): + return _sim_services.DLL_RemoveAll(*args) +DLL_RemoveAll = _sim_services.DLL_RemoveAll + +def DLL_InsertBefore(*args): + return _sim_services.DLL_InsertBefore(*args) +DLL_InsertBefore = _sim_services.DLL_InsertBefore + +def DLL_InsertAfter(*args): + return _sim_services.DLL_InsertAfter(*args) +DLL_InsertAfter = _sim_services.DLL_InsertAfter + +def DLL_GetNext(*args): + return _sim_services.DLL_GetNext(*args) +DLL_GetNext = _sim_services.DLL_GetNext + +def DLL_GetPrev(*args): + return _sim_services.DLL_GetPrev(*args) +DLL_GetPrev = _sim_services.DLL_GetPrev + +def DLL_AddHead(*args): + return _sim_services.DLL_AddHead(*args) +DLL_AddHead = _sim_services.DLL_AddHead + +def DLL_AddTail(*args): + return _sim_services.DLL_AddTail(*args) +DLL_AddTail = _sim_services.DLL_AddTail + +def DLL_GetHeadPosition(*args): + return _sim_services.DLL_GetHeadPosition(*args) +DLL_GetHeadPosition = _sim_services.DLL_GetHeadPosition + +def DLL_GetTailPosition(*args): + return _sim_services.DLL_GetTailPosition(*args) +DLL_GetTailPosition = _sim_services.DLL_GetTailPosition + +def bubble_sort(*args): + return _sim_services.bubble_sort(*args) +bubble_sort = _sim_services.bubble_sort +TRICK_NO_ERROR = _sim_services.TRICK_NO_ERROR +TRICK_PARAMETER_ARRAY_SIZE = _sim_services.TRICK_PARAMETER_ARRAY_SIZE +TRICK_PARAMETER_ADDRESS_NULL = _sim_services.TRICK_PARAMETER_ADDRESS_NULL +TRICK_UNITS_CONVERSION_ERROR = _sim_services.TRICK_UNITS_CONVERSION_ERROR +REF_ADDRESS = _sim_services.REF_ADDRESS +REF_VALUE = _sim_services.REF_VALUE +REF_INVALID = _sim_services.REF_INVALID +AO_ADDRESS = _sim_services.AO_ADDRESS +AO_OFFSET = _sim_services.AO_OFFSET +AO_DEREFERENCE = _sim_services.AO_DEREFERENCE +class ADDRESS_OPERAND(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ADDRESS_OPERAND, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ADDRESS_OPERAND, name) + __repr__ = _swig_repr + __swig_setmethods__["address"] = _sim_services.ADDRESS_OPERAND_address_set + __swig_getmethods__["address"] = _sim_services.ADDRESS_OPERAND_address_get + if _newclass: + address = _swig_property(_sim_services.ADDRESS_OPERAND_address_get, _sim_services.ADDRESS_OPERAND_address_set) + __swig_setmethods__["offset"] = _sim_services.ADDRESS_OPERAND_offset_set + __swig_getmethods__["offset"] = _sim_services.ADDRESS_OPERAND_offset_get + if _newclass: + offset = _swig_property(_sim_services.ADDRESS_OPERAND_offset_get, _sim_services.ADDRESS_OPERAND_offset_set) + + def __init__(self): + this = _sim_services.new_ADDRESS_OPERAND() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ADDRESS_OPERAND + __del__ = lambda self: None +ADDRESS_OPERAND_swigregister = _sim_services.ADDRESS_OPERAND_swigregister +ADDRESS_OPERAND_swigregister(ADDRESS_OPERAND) + +class ADDRESS_NODE(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ADDRESS_NODE, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ADDRESS_NODE, name) + __repr__ = _swig_repr + __swig_setmethods__["operator_"] = _sim_services.ADDRESS_NODE_operator__set + __swig_getmethods__["operator_"] = _sim_services.ADDRESS_NODE_operator__get + if _newclass: + operator_ = _swig_property(_sim_services.ADDRESS_NODE_operator__get, _sim_services.ADDRESS_NODE_operator__set) + __swig_setmethods__["operand"] = _sim_services.ADDRESS_NODE_operand_set + __swig_getmethods__["operand"] = _sim_services.ADDRESS_NODE_operand_get + if _newclass: + operand = _swig_property(_sim_services.ADDRESS_NODE_operand_get, _sim_services.ADDRESS_NODE_operand_set) + + def __init__(self): + this = _sim_services.new_ADDRESS_NODE() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ADDRESS_NODE + __del__ = lambda self: None +ADDRESS_NODE_swigregister = _sim_services.ADDRESS_NODE_swigregister +ADDRESS_NODE_swigregister(ADDRESS_NODE) + +class REF2(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, REF2, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, REF2, name) + __repr__ = _swig_repr + __swig_setmethods__["reference"] = _sim_services.REF2_reference_set + __swig_getmethods__["reference"] = _sim_services.REF2_reference_get + if _newclass: + reference = _swig_property(_sim_services.REF2_reference_get, _sim_services.REF2_reference_set) + __swig_setmethods__["num_index"] = _sim_services.REF2_num_index_set + __swig_getmethods__["num_index"] = _sim_services.REF2_num_index_get + if _newclass: + num_index = _swig_property(_sim_services.REF2_num_index_get, _sim_services.REF2_num_index_set) + __swig_setmethods__["units"] = _sim_services.REF2_units_set + __swig_getmethods__["units"] = _sim_services.REF2_units_get + if _newclass: + units = _swig_property(_sim_services.REF2_units_get, _sim_services.REF2_units_set) + __swig_setmethods__["num_index_left"] = _sim_services.REF2_num_index_left_set + __swig_getmethods__["num_index_left"] = _sim_services.REF2_num_index_left_get + if _newclass: + num_index_left = _swig_property(_sim_services.REF2_num_index_left_get, _sim_services.REF2_num_index_left_set) + __swig_setmethods__["pointer_present"] = _sim_services.REF2_pointer_present_set + __swig_getmethods__["pointer_present"] = _sim_services.REF2_pointer_present_get + if _newclass: + pointer_present = _swig_property(_sim_services.REF2_pointer_present_get, _sim_services.REF2_pointer_present_set) + __swig_setmethods__["ref_type"] = _sim_services.REF2_ref_type_set + __swig_getmethods__["ref_type"] = _sim_services.REF2_ref_type_get + if _newclass: + ref_type = _swig_property(_sim_services.REF2_ref_type_get, _sim_services.REF2_ref_type_set) + __swig_setmethods__["address"] = _sim_services.REF2_address_set + __swig_getmethods__["address"] = _sim_services.REF2_address_get + if _newclass: + address = _swig_property(_sim_services.REF2_address_get, _sim_services.REF2_address_set) + __swig_setmethods__["v_data"] = _sim_services.REF2_v_data_set + __swig_getmethods__["v_data"] = _sim_services.REF2_v_data_get + if _newclass: + v_data = _swig_property(_sim_services.REF2_v_data_get, _sim_services.REF2_v_data_set) + __swig_setmethods__["attr"] = _sim_services.REF2_attr_set + __swig_getmethods__["attr"] = _sim_services.REF2_attr_get + if _newclass: + attr = _swig_property(_sim_services.REF2_attr_get, _sim_services.REF2_attr_set) + __swig_setmethods__["ref_attr"] = _sim_services.REF2_ref_attr_set + __swig_getmethods__["ref_attr"] = _sim_services.REF2_ref_attr_get + if _newclass: + ref_attr = _swig_property(_sim_services.REF2_ref_attr_get, _sim_services.REF2_ref_attr_set) + __swig_setmethods__["create_add_path"] = _sim_services.REF2_create_add_path_set + __swig_getmethods__["create_add_path"] = _sim_services.REF2_create_add_path_get + if _newclass: + create_add_path = _swig_property(_sim_services.REF2_create_add_path_get, _sim_services.REF2_create_add_path_set) + __swig_setmethods__["address_path"] = _sim_services.REF2_address_path_set + __swig_getmethods__["address_path"] = _sim_services.REF2_address_path_get + if _newclass: + address_path = _swig_property(_sim_services.REF2_address_path_get, _sim_services.REF2_address_path_set) + + def __init__(self): + this = _sim_services.new_REF2() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_REF2 + __del__ = lambda self: None +REF2_swigregister = _sim_services.REF2_swigregister +REF2_swigregister(REF2) + + +def ref_to_value(*args): + return _sim_services.ref_to_value(*args) +ref_to_value = _sim_services.ref_to_value +DR_Always = _sim_services.DR_Always +DR_Changes = _sim_services.DR_Changes +DR_Changes_Step = _sim_services.DR_Changes_Step +DR_Buffer = _sim_services.DR_Buffer +DR_No_Buffer = _sim_services.DR_No_Buffer +DR_Ring_Buffer = _sim_services.DR_Ring_Buffer +DR_Thread_Buffer = _sim_services.DR_Thread_Buffer +DR_Not_Specified = _sim_services.DR_Not_Specified +class DataRecordBuffer(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordBuffer, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DataRecordBuffer, name) + __repr__ = _swig_repr + __swig_setmethods__["buffer"] = _sim_services.DataRecordBuffer_buffer_set + __swig_getmethods__["buffer"] = _sim_services.DataRecordBuffer_buffer_get + if _newclass: + buffer = _swig_property(_sim_services.DataRecordBuffer_buffer_get, _sim_services.DataRecordBuffer_buffer_set) + __swig_setmethods__["curr_buffer"] = _sim_services.DataRecordBuffer_curr_buffer_set + __swig_getmethods__["curr_buffer"] = _sim_services.DataRecordBuffer_curr_buffer_get + if _newclass: + curr_buffer = _swig_property(_sim_services.DataRecordBuffer_curr_buffer_get, _sim_services.DataRecordBuffer_curr_buffer_set) + __swig_setmethods__["last_value"] = _sim_services.DataRecordBuffer_last_value_set + __swig_getmethods__["last_value"] = _sim_services.DataRecordBuffer_last_value_get + if _newclass: + last_value = _swig_property(_sim_services.DataRecordBuffer_last_value_get, _sim_services.DataRecordBuffer_last_value_set) + __swig_setmethods__["ref"] = _sim_services.DataRecordBuffer_ref_set + __swig_getmethods__["ref"] = _sim_services.DataRecordBuffer_ref_get + if _newclass: + ref = _swig_property(_sim_services.DataRecordBuffer_ref_get, _sim_services.DataRecordBuffer_ref_set) + __swig_setmethods__["ref_searched"] = _sim_services.DataRecordBuffer_ref_searched_set + __swig_getmethods__["ref_searched"] = _sim_services.DataRecordBuffer_ref_searched_get + if _newclass: + ref_searched = _swig_property(_sim_services.DataRecordBuffer_ref_searched_get, _sim_services.DataRecordBuffer_ref_searched_set) + __swig_setmethods__["name"] = _sim_services.DataRecordBuffer_name_set + __swig_getmethods__["name"] = _sim_services.DataRecordBuffer_name_get + if _newclass: + name = _swig_property(_sim_services.DataRecordBuffer_name_get, _sim_services.DataRecordBuffer_name_set) + __swig_setmethods__["alias"] = _sim_services.DataRecordBuffer_alias_set + __swig_getmethods__["alias"] = _sim_services.DataRecordBuffer_alias_get + if _newclass: + alias = _swig_property(_sim_services.DataRecordBuffer_alias_get, _sim_services.DataRecordBuffer_alias_set) + + def __init__(self, *args): + this = _sim_services.new_DataRecordBuffer(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_DataRecordBuffer + __del__ = lambda self: None +DataRecordBuffer_swigregister = _sim_services.DataRecordBuffer_swigregister +DataRecordBuffer_swigregister(DataRecordBuffer) + +class DataRecordGroup(SimObject): + __swig_setmethods__ = {} + for _s in [SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordGroup, name, value) + __swig_getmethods__ = {} + for _s in [SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, DataRecordGroup, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_setmethods__["record"] = _sim_services.DataRecordGroup_record_set + __swig_getmethods__["record"] = _sim_services.DataRecordGroup_record_get + if _newclass: + record = _swig_property(_sim_services.DataRecordGroup_record_get, _sim_services.DataRecordGroup_record_set) + __swig_setmethods__["inited"] = _sim_services.DataRecordGroup_inited_set + __swig_getmethods__["inited"] = _sim_services.DataRecordGroup_inited_get + if _newclass: + inited = _swig_property(_sim_services.DataRecordGroup_inited_get, _sim_services.DataRecordGroup_inited_set) + __swig_setmethods__["group_name"] = _sim_services.DataRecordGroup_group_name_set + __swig_getmethods__["group_name"] = _sim_services.DataRecordGroup_group_name_get + if _newclass: + group_name = _swig_property(_sim_services.DataRecordGroup_group_name_get, _sim_services.DataRecordGroup_group_name_set) + __swig_setmethods__["output_dir"] = _sim_services.DataRecordGroup_output_dir_set + __swig_getmethods__["output_dir"] = _sim_services.DataRecordGroup_output_dir_get + if _newclass: + output_dir = _swig_property(_sim_services.DataRecordGroup_output_dir_get, _sim_services.DataRecordGroup_output_dir_set) + __swig_setmethods__["file_name"] = _sim_services.DataRecordGroup_file_name_set + __swig_getmethods__["file_name"] = _sim_services.DataRecordGroup_file_name_get + if _newclass: + file_name = _swig_property(_sim_services.DataRecordGroup_file_name_get, _sim_services.DataRecordGroup_file_name_set) + __swig_setmethods__["freq"] = _sim_services.DataRecordGroup_freq_set + __swig_getmethods__["freq"] = _sim_services.DataRecordGroup_freq_get + if _newclass: + freq = _swig_property(_sim_services.DataRecordGroup_freq_get, _sim_services.DataRecordGroup_freq_set) + __swig_setmethods__["start"] = _sim_services.DataRecordGroup_start_set + __swig_getmethods__["start"] = _sim_services.DataRecordGroup_start_get + if _newclass: + start = _swig_property(_sim_services.DataRecordGroup_start_get, _sim_services.DataRecordGroup_start_set) + __swig_setmethods__["cycle"] = _sim_services.DataRecordGroup_cycle_set + __swig_getmethods__["cycle"] = _sim_services.DataRecordGroup_cycle_get + if _newclass: + cycle = _swig_property(_sim_services.DataRecordGroup_cycle_get, _sim_services.DataRecordGroup_cycle_set) + __swig_setmethods__["time_value_attr"] = _sim_services.DataRecordGroup_time_value_attr_set + __swig_getmethods__["time_value_attr"] = _sim_services.DataRecordGroup_time_value_attr_get + if _newclass: + time_value_attr = _swig_property(_sim_services.DataRecordGroup_time_value_attr_get, _sim_services.DataRecordGroup_time_value_attr_set) + __swig_setmethods__["num_variable_names"] = _sim_services.DataRecordGroup_num_variable_names_set + __swig_getmethods__["num_variable_names"] = _sim_services.DataRecordGroup_num_variable_names_get + if _newclass: + num_variable_names = _swig_property(_sim_services.DataRecordGroup_num_variable_names_get, _sim_services.DataRecordGroup_num_variable_names_set) + __swig_setmethods__["variable_names"] = _sim_services.DataRecordGroup_variable_names_set + __swig_getmethods__["variable_names"] = _sim_services.DataRecordGroup_variable_names_get + if _newclass: + variable_names = _swig_property(_sim_services.DataRecordGroup_variable_names_get, _sim_services.DataRecordGroup_variable_names_set) + __swig_setmethods__["variable_alias"] = _sim_services.DataRecordGroup_variable_alias_set + __swig_getmethods__["variable_alias"] = _sim_services.DataRecordGroup_variable_alias_get + if _newclass: + variable_alias = _swig_property(_sim_services.DataRecordGroup_variable_alias_get, _sim_services.DataRecordGroup_variable_alias_set) + __swig_setmethods__["rec_buffer"] = _sim_services.DataRecordGroup_rec_buffer_set + __swig_getmethods__["rec_buffer"] = _sim_services.DataRecordGroup_rec_buffer_get + if _newclass: + rec_buffer = _swig_property(_sim_services.DataRecordGroup_rec_buffer_get, _sim_services.DataRecordGroup_rec_buffer_set) + __swig_setmethods__["num_change_variable_names"] = _sim_services.DataRecordGroup_num_change_variable_names_set + __swig_getmethods__["num_change_variable_names"] = _sim_services.DataRecordGroup_num_change_variable_names_get + if _newclass: + num_change_variable_names = _swig_property(_sim_services.DataRecordGroup_num_change_variable_names_get, _sim_services.DataRecordGroup_num_change_variable_names_set) + __swig_setmethods__["change_variable_names"] = _sim_services.DataRecordGroup_change_variable_names_set + __swig_getmethods__["change_variable_names"] = _sim_services.DataRecordGroup_change_variable_names_get + if _newclass: + change_variable_names = _swig_property(_sim_services.DataRecordGroup_change_variable_names_get, _sim_services.DataRecordGroup_change_variable_names_set) + __swig_setmethods__["change_variable_alias"] = _sim_services.DataRecordGroup_change_variable_alias_set + __swig_getmethods__["change_variable_alias"] = _sim_services.DataRecordGroup_change_variable_alias_get + if _newclass: + change_variable_alias = _swig_property(_sim_services.DataRecordGroup_change_variable_alias_get, _sim_services.DataRecordGroup_change_variable_alias_set) + __swig_setmethods__["change_buffer"] = _sim_services.DataRecordGroup_change_buffer_set + __swig_getmethods__["change_buffer"] = _sim_services.DataRecordGroup_change_buffer_get + if _newclass: + change_buffer = _swig_property(_sim_services.DataRecordGroup_change_buffer_get, _sim_services.DataRecordGroup_change_buffer_set) + __swig_setmethods__["max_num"] = _sim_services.DataRecordGroup_max_num_set + __swig_getmethods__["max_num"] = _sim_services.DataRecordGroup_max_num_get + if _newclass: + max_num = _swig_property(_sim_services.DataRecordGroup_max_num_get, _sim_services.DataRecordGroup_max_num_set) + __swig_setmethods__["buffer_num"] = _sim_services.DataRecordGroup_buffer_num_set + __swig_getmethods__["buffer_num"] = _sim_services.DataRecordGroup_buffer_num_get + if _newclass: + buffer_num = _swig_property(_sim_services.DataRecordGroup_buffer_num_get, _sim_services.DataRecordGroup_buffer_num_set) + __swig_setmethods__["writer_num"] = _sim_services.DataRecordGroup_writer_num_set + __swig_getmethods__["writer_num"] = _sim_services.DataRecordGroup_writer_num_get + if _newclass: + writer_num = _swig_property(_sim_services.DataRecordGroup_writer_num_get, _sim_services.DataRecordGroup_writer_num_set) + __swig_setmethods__["max_file_size"] = _sim_services.DataRecordGroup_max_file_size_set + __swig_getmethods__["max_file_size"] = _sim_services.DataRecordGroup_max_file_size_get + if _newclass: + max_file_size = _swig_property(_sim_services.DataRecordGroup_max_file_size_get, _sim_services.DataRecordGroup_max_file_size_set) + __swig_setmethods__["total_bytes_written"] = _sim_services.DataRecordGroup_total_bytes_written_set + __swig_getmethods__["total_bytes_written"] = _sim_services.DataRecordGroup_total_bytes_written_get + if _newclass: + total_bytes_written = _swig_property(_sim_services.DataRecordGroup_total_bytes_written_get, _sim_services.DataRecordGroup_total_bytes_written_set) + __swig_setmethods__["max_size_warning"] = _sim_services.DataRecordGroup_max_size_warning_set + __swig_getmethods__["max_size_warning"] = _sim_services.DataRecordGroup_max_size_warning_get + if _newclass: + max_size_warning = _swig_property(_sim_services.DataRecordGroup_max_size_warning_get, _sim_services.DataRecordGroup_max_size_warning_set) + __swig_setmethods__["writer_buff"] = _sim_services.DataRecordGroup_writer_buff_set + __swig_getmethods__["writer_buff"] = _sim_services.DataRecordGroup_writer_buff_get + if _newclass: + writer_buff = _swig_property(_sim_services.DataRecordGroup_writer_buff_get, _sim_services.DataRecordGroup_writer_buff_set) + __swig_setmethods__["writer_buff_size"] = _sim_services.DataRecordGroup_writer_buff_size_set + __swig_getmethods__["writer_buff_size"] = _sim_services.DataRecordGroup_writer_buff_size_get + if _newclass: + writer_buff_size = _swig_property(_sim_services.DataRecordGroup_writer_buff_size_get, _sim_services.DataRecordGroup_writer_buff_size_set) + __swig_setmethods__["byte_order"] = _sim_services.DataRecordGroup_byte_order_set + __swig_getmethods__["byte_order"] = _sim_services.DataRecordGroup_byte_order_get + if _newclass: + byte_order = _swig_property(_sim_services.DataRecordGroup_byte_order_get, _sim_services.DataRecordGroup_byte_order_set) + __swig_setmethods__["single_prec_only"] = _sim_services.DataRecordGroup_single_prec_only_set + __swig_getmethods__["single_prec_only"] = _sim_services.DataRecordGroup_single_prec_only_get + if _newclass: + single_prec_only = _swig_property(_sim_services.DataRecordGroup_single_prec_only_get, _sim_services.DataRecordGroup_single_prec_only_set) + __swig_setmethods__["buffer_type"] = _sim_services.DataRecordGroup_buffer_type_set + __swig_getmethods__["buffer_type"] = _sim_services.DataRecordGroup_buffer_type_get + if _newclass: + buffer_type = _swig_property(_sim_services.DataRecordGroup_buffer_type_get, _sim_services.DataRecordGroup_buffer_type_set) + __swig_setmethods__["job_class"] = _sim_services.DataRecordGroup_job_class_set + __swig_getmethods__["job_class"] = _sim_services.DataRecordGroup_job_class_get + if _newclass: + job_class = _swig_property(_sim_services.DataRecordGroup_job_class_get, _sim_services.DataRecordGroup_job_class_set) + __swig_setmethods__["write_job"] = _sim_services.DataRecordGroup_write_job_set + __swig_getmethods__["write_job"] = _sim_services.DataRecordGroup_write_job_get + if _newclass: + write_job = _swig_property(_sim_services.DataRecordGroup_write_job_get, _sim_services.DataRecordGroup_write_job_set) + __swig_destroy__ = _sim_services.delete_DataRecordGroup + __del__ = lambda self: None + + def get_group_name(self, *args): + return _sim_services.DataRecordGroup_get_group_name(self, *args) + + def register_group_with_mm(self, *args): + return _sim_services.DataRecordGroup_register_group_with_mm(self, *args) + + def set_job_class(self, *args): + return _sim_services.DataRecordGroup_set_job_class(self, *args) + + def set_cycle(self, *args): + return _sim_services.DataRecordGroup_set_cycle(self, *args) + + def set_phase(self, *args): + return _sim_services.DataRecordGroup_set_phase(self, *args) + + def set_freq(self, *args): + return _sim_services.DataRecordGroup_set_freq(self, *args) + + def set_max_buffer_size(self, *args): + return _sim_services.DataRecordGroup_set_max_buffer_size(self, *args) + + def set_buffer_type(self, *args): + return _sim_services.DataRecordGroup_set_buffer_type(self, *args) + + def set_max_file_size(self, *args): + return _sim_services.DataRecordGroup_set_max_file_size(self, *args) + + def set_single_prec_only(self, *args): + return _sim_services.DataRecordGroup_set_single_prec_only(self, *args) + + def set_thread(self, *args): + return _sim_services.DataRecordGroup_set_thread(self, *args) + + def enable(self, *args): + return _sim_services.DataRecordGroup_enable(self, *args) + + def disable(self, *args): + return _sim_services.DataRecordGroup_disable(self, *args) + + def init(self, *args): + return _sim_services.DataRecordGroup_init(self, *args) + + def checkpoint(self, *args): + return _sim_services.DataRecordGroup_checkpoint(self, *args) + + def clear_checkpoint_vars(self, *args): + return _sim_services.DataRecordGroup_clear_checkpoint_vars(self, *args) + + def restart(self, *args): + return _sim_services.DataRecordGroup_restart(self, *args) + + def format_specific_header(self, *args): + return _sim_services.DataRecordGroup_format_specific_header(self, *args) + + def format_specific_init(self, *args): + return _sim_services.DataRecordGroup_format_specific_init(self, *args) + + def format_specific_write_data(self, *args): + return _sim_services.DataRecordGroup_format_specific_write_data(self, *args) + + def format_specific_shutdown(self, *args): + return _sim_services.DataRecordGroup_format_specific_shutdown(self, *args) + + def write_header(self, *args): + return _sim_services.DataRecordGroup_write_header(self, *args) + + def remove_variable(self, *args): + return _sim_services.DataRecordGroup_remove_variable(self, *args) + + def remove_all_variables(self, *args): + return _sim_services.DataRecordGroup_remove_all_variables(self, *args) + + def add_variable(self, *args): + return _sim_services.DataRecordGroup_add_variable(self, *args) + + def add_change_variable(self, *args): + return _sim_services.DataRecordGroup_add_change_variable(self, *args) + + def data_record(self, *args): + return _sim_services.DataRecordGroup_data_record(self, *args) + + def write_data(self, *args): + return _sim_services.DataRecordGroup_write_data(self, *args) + + def shutdown(self, *args): + return _sim_services.DataRecordGroup_shutdown(self, *args) + + def call_function(self, *args): + return _sim_services.DataRecordGroup_call_function(self, *args) + + def call_function_double(self, *args): + return _sim_services.DataRecordGroup_call_function_double(self, *args) + + def type_string(self, *args): + return _sim_services.DataRecordGroup_type_string(self, *args) +DataRecordGroup_swigregister = _sim_services.DataRecordGroup_swigregister +DataRecordGroup_swigregister(DataRecordGroup) + +class DRAscii(DataRecordGroup): + __swig_setmethods__ = {} + for _s in [DataRecordGroup]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, DRAscii, name, value) + __swig_getmethods__ = {} + for _s in [DataRecordGroup]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, DRAscii, name) + __repr__ = _swig_repr + __swig_setmethods__["ascii_float_format"] = _sim_services.DRAscii_ascii_float_format_set + __swig_getmethods__["ascii_float_format"] = _sim_services.DRAscii_ascii_float_format_get + if _newclass: + ascii_float_format = _swig_property(_sim_services.DRAscii_ascii_float_format_get, _sim_services.DRAscii_ascii_float_format_set) + __swig_setmethods__["ascii_double_format"] = _sim_services.DRAscii_ascii_double_format_set + __swig_getmethods__["ascii_double_format"] = _sim_services.DRAscii_ascii_double_format_get + if _newclass: + ascii_double_format = _swig_property(_sim_services.DRAscii_ascii_double_format_get, _sim_services.DRAscii_ascii_double_format_set) + __swig_setmethods__["delimiter"] = _sim_services.DRAscii_delimiter_set + __swig_getmethods__["delimiter"] = _sim_services.DRAscii_delimiter_get + if _newclass: + delimiter = _swig_property(_sim_services.DRAscii_delimiter_get, _sim_services.DRAscii_delimiter_set) + __swig_destroy__ = _sim_services.delete_DRAscii + __del__ = lambda self: None + + def __init__(self, *args): + this = _sim_services.new_DRAscii(*args) + try: self.this.append(this) + except: self.this = this + this.own(0) + self.this.own(0) + + + + def format_specific_header(self, *args): + return _sim_services.DRAscii_format_specific_header(self, *args) + + def format_specific_init(self, *args): + return _sim_services.DRAscii_format_specific_init(self, *args) + + def format_specific_write_data(self, *args): + return _sim_services.DRAscii_format_specific_write_data(self, *args) + + def format_specific_shutdown(self, *args): + return _sim_services.DRAscii_format_specific_shutdown(self, *args) + + def set_ascii_float_format(self, *args): + return _sim_services.DRAscii_set_ascii_float_format(self, *args) + + def set_ascii_double_format(self, *args): + return _sim_services.DRAscii_set_ascii_double_format(self, *args) + + def set_delimiter(self, *args): + return _sim_services.DRAscii_set_delimiter(self, *args) + + def set_single_prec_only(self, *args): + return _sim_services.DRAscii_set_single_prec_only(self, *args) +DRAscii_swigregister = _sim_services.DRAscii_swigregister +DRAscii_swigregister(DRAscii) + +class DRBinary(DataRecordGroup): + __swig_setmethods__ = {} + for _s in [DataRecordGroup]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, DRBinary, name, value) + __swig_getmethods__ = {} + for _s in [DataRecordGroup]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, DRBinary, name) + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_DRBinary + __del__ = lambda self: None + + def __init__(self, *args): + this = _sim_services.new_DRBinary(*args) + try: self.this.append(this) + except: self.this = this + this.own(0) + self.this.own(0) + + + + def format_specific_header(self, outstream): + return _sim_services.DRBinary_format_specific_header(self, outstream) + + def format_specific_init(self): + return _sim_services.DRBinary_format_specific_init(self) + + def format_specific_write_data(self, writer_offset): + return _sim_services.DRBinary_format_specific_write_data(self, writer_offset) + + def format_specific_shutdown(self): + return _sim_services.DRBinary_format_specific_shutdown(self) +DRBinary_swigregister = _sim_services.DRBinary_swigregister +DRBinary_swigregister(DRBinary) + +class HDF5_INFO(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, HDF5_INFO, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, HDF5_INFO, name) + __repr__ = _swig_repr + __swig_setmethods__["dataset"] = _sim_services.HDF5_INFO_dataset_set + __swig_getmethods__["dataset"] = _sim_services.HDF5_INFO_dataset_get + if _newclass: + dataset = _swig_property(_sim_services.HDF5_INFO_dataset_get, _sim_services.HDF5_INFO_dataset_set) + __swig_setmethods__["drb"] = _sim_services.HDF5_INFO_drb_set + __swig_getmethods__["drb"] = _sim_services.HDF5_INFO_drb_get + if _newclass: + drb = _swig_property(_sim_services.HDF5_INFO_drb_get, _sim_services.HDF5_INFO_drb_set) + + def __init__(self): + this = _sim_services.new_HDF5_INFO() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_HDF5_INFO + __del__ = lambda self: None +HDF5_INFO_swigregister = _sim_services.HDF5_INFO_swigregister +HDF5_INFO_swigregister(HDF5_INFO) + +class DRHDF5(DataRecordGroup): + __swig_setmethods__ = {} + for _s in [DataRecordGroup]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, DRHDF5, name, value) + __swig_getmethods__ = {} + for _s in [DataRecordGroup]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, DRHDF5, name) + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_DRHDF5 + __del__ = lambda self: None + + def __init__(self, *args): + this = _sim_services.new_DRHDF5(*args) + try: self.this.append(this) + except: self.this = this + this.own(0) + self.this.own(0) + + + + def format_specific_header(self, *args): + return _sim_services.DRHDF5_format_specific_header(self, *args) + + def format_specific_init(self, *args): + return _sim_services.DRHDF5_format_specific_init(self, *args) + + def write_data(self, *args): + return _sim_services.DRHDF5_write_data(self, *args) + + def format_specific_write_data(self, *args): + return _sim_services.DRHDF5_format_specific_write_data(self, *args) + + def format_specific_shutdown(self, *args): + return _sim_services.DRHDF5_format_specific_shutdown(self, *args) +DRHDF5_swigregister = _sim_services.DRHDF5_swigregister +DRHDF5_swigregister(DRHDF5) + +class ScheduledJobQueue(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ScheduledJobQueue, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ScheduledJobQueue, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_ScheduledJobQueue(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ScheduledJobQueue + __del__ = lambda self: None + + def push(self, *args): + return _sim_services.ScheduledJobQueue_push(self, *args) + + def push_ignore_sim_object(self, *args): + return _sim_services.ScheduledJobQueue_push_ignore_sim_object(self, *args) + + def remove(self, *args): + return _sim_services.ScheduledJobQueue_remove(self, *args) + + def get_curr_index(self, *args): + return _sim_services.ScheduledJobQueue_get_curr_index(self, *args) + + def set_curr_index(self, *args): + return _sim_services.ScheduledJobQueue_set_curr_index(self, *args) + + def reset_curr_index(self, *args): + return _sim_services.ScheduledJobQueue_reset_curr_index(self, *args) + + def size(self, *args): + return _sim_services.ScheduledJobQueue_size(self, *args) + + def empty(self, *args): + return _sim_services.ScheduledJobQueue_empty(self, *args) + + def clear(self, *args): + return _sim_services.ScheduledJobQueue_clear(self, *args) + + def execute_all_jobs(self, *args): + return _sim_services.ScheduledJobQueue_execute_all_jobs(self, *args) + + def write_sched_queue(self, *args): + return _sim_services.ScheduledJobQueue_write_sched_queue(self, *args) + + def write_non_sched_queue(self, *args): + return _sim_services.ScheduledJobQueue_write_non_sched_queue(self, *args) + + def instrument_before(self, *args): + return _sim_services.ScheduledJobQueue_instrument_before(self, *args) + + def instrument_after(self, *args): + return _sim_services.ScheduledJobQueue_instrument_after(self, *args) + + def instrument_remove(self, *args): + return _sim_services.ScheduledJobQueue_instrument_remove(self, *args) + + def top(self, *args): + return _sim_services.ScheduledJobQueue_top(self, *args) + + def get_next_job(self, *args): + return _sim_services.ScheduledJobQueue_get_next_job(self, *args) + + def find_next_job(self, *args): + return _sim_services.ScheduledJobQueue_find_next_job(self, *args) + + def find_job(self, *args): + return _sim_services.ScheduledJobQueue_find_job(self, *args) + + def set_next_job_call_time(self, *args): + return _sim_services.ScheduledJobQueue_set_next_job_call_time(self, *args) + + def get_next_job_call_time(self, *args): + return _sim_services.ScheduledJobQueue_get_next_job_call_time(self, *args) + + def test_next_job_call_time(self, *args): + return _sim_services.ScheduledJobQueue_test_next_job_call_time(self, *args) +ScheduledJobQueue_swigregister = _sim_services.ScheduledJobQueue_swigregister +ScheduledJobQueue_swigregister(ScheduledJobQueue) + +class Scheduler(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Scheduler, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Scheduler, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_Scheduler + __del__ = lambda self: None + + def add_sim_object(self, *args): + return _sim_services.Scheduler_add_sim_object(self, *args) + + def delete_sim_object(self, *args): + return _sim_services.Scheduler_delete_sim_object(self, *args) + + def write_sched_queue(self, *args): + return _sim_services.Scheduler_write_sched_queue(self, *args) + + def write_non_sched_queue(self, *args): + return _sim_services.Scheduler_write_non_sched_queue(self, *args) + + def write_s_job_execution(self, *args): + return _sim_services.Scheduler_write_s_job_execution(self, *args) + + def instrument_job_before(self, *args): + return _sim_services.Scheduler_instrument_job_before(self, *args) + + def instrument_job_after(self, *args): + return _sim_services.Scheduler_instrument_job_after(self, *args) + + def instrument_job_remove(self, *args): + return _sim_services.Scheduler_instrument_job_remove(self, *args) +Scheduler_swigregister = _sim_services.Scheduler_swigregister +Scheduler_swigregister(Scheduler) + +class ThreadBase(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadBase, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ThreadBase, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_ThreadBase + __del__ = lambda self: None + + def get_name(self, *args): + return _sim_services.ThreadBase_get_name(self, *args) + + def set_name(self, *args): + return _sim_services.ThreadBase_set_name(self, *args) + + def get_pthread_id(self, *args): + return _sim_services.ThreadBase_get_pthread_id(self, *args) + + def get_pid(self, *args): + return _sim_services.ThreadBase_get_pid(self, *args) + + def set_pid(self, *args): + return _sim_services.ThreadBase_set_pid(self, *args) + + def cpu_set(self, *args): + return _sim_services.ThreadBase_cpu_set(self, *args) + + def cpu_clr(self, *args): + return _sim_services.ThreadBase_cpu_clr(self, *args) + + def execute_cpu_affinity(self, *args): + return _sim_services.ThreadBase_execute_cpu_affinity(self, *args) + + def set_priority(self, *args): + return _sim_services.ThreadBase_set_priority(self, *args) + + def execute_priority(self, *args): + return _sim_services.ThreadBase_execute_priority(self, *args) + + def create_thread(self, *args): + return _sim_services.ThreadBase_create_thread(self, *args) + + def cancel_thread(self, *args): + return _sim_services.ThreadBase_cancel_thread(self, *args) + + def join_thread(self, *args): + return _sim_services.ThreadBase_join_thread(self, *args) + + def thread_body(self, *args): + return _sim_services.ThreadBase_thread_body(self, *args) + if _newclass: + thread_helper = staticmethod(_sim_services.ThreadBase_thread_helper) + else: + thread_helper = _sim_services.ThreadBase_thread_helper + + def dump(self, *args): + return _sim_services.ThreadBase_dump(self, *args) + + def test_shutdown(self, *args): + return _sim_services.ThreadBase_test_shutdown(self, *args) + + def thread_shutdown(self, *args): + return _sim_services.ThreadBase_thread_shutdown(self, *args) +ThreadBase_swigregister = _sim_services.ThreadBase_swigregister +ThreadBase_swigregister(ThreadBase) + +def ThreadBase_thread_helper(*args): + return _sim_services.ThreadBase_thread_helper(*args) +ThreadBase_thread_helper = _sim_services.ThreadBase_thread_helper + +class SysThread(ThreadBase): + __swig_setmethods__ = {} + for _s in [ThreadBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, SysThread, name, value) + __swig_getmethods__ = {} + for _s in [ThreadBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, SysThread, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_SysThread + __del__ = lambda self: None + if _newclass: + ensureAllShutdown = staticmethod(_sim_services.SysThread_ensureAllShutdown) + else: + ensureAllShutdown = _sim_services.SysThread_ensureAllShutdown +SysThread_swigregister = _sim_services.SysThread_swigregister +SysThread_swigregister(SysThread) + +def SysThread_ensureAllShutdown(*args): + return _sim_services.SysThread_ensureAllShutdown(*args) +SysThread_ensureAllShutdown = _sim_services.SysThread_ensureAllShutdown + +class DRDMutexes(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DRDMutexes, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DRDMutexes, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_DRDMutexes(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["dr_go_cv"] = _sim_services.DRDMutexes_dr_go_cv_set + __swig_getmethods__["dr_go_cv"] = _sim_services.DRDMutexes_dr_go_cv_get + if _newclass: + dr_go_cv = _swig_property(_sim_services.DRDMutexes_dr_go_cv_get, _sim_services.DRDMutexes_dr_go_cv_set) + __swig_setmethods__["dr_go_mutex"] = _sim_services.DRDMutexes_dr_go_mutex_set + __swig_getmethods__["dr_go_mutex"] = _sim_services.DRDMutexes_dr_go_mutex_get + if _newclass: + dr_go_mutex = _swig_property(_sim_services.DRDMutexes_dr_go_mutex_get, _sim_services.DRDMutexes_dr_go_mutex_set) + __swig_setmethods__["init_complete_cv"] = _sim_services.DRDMutexes_init_complete_cv_set + __swig_getmethods__["init_complete_cv"] = _sim_services.DRDMutexes_init_complete_cv_get + if _newclass: + init_complete_cv = _swig_property(_sim_services.DRDMutexes_init_complete_cv_get, _sim_services.DRDMutexes_init_complete_cv_set) + __swig_setmethods__["init_complete_mutex"] = _sim_services.DRDMutexes_init_complete_mutex_set + __swig_getmethods__["init_complete_mutex"] = _sim_services.DRDMutexes_init_complete_mutex_get + if _newclass: + init_complete_mutex = _swig_property(_sim_services.DRDMutexes_init_complete_mutex_get, _sim_services.DRDMutexes_init_complete_mutex_set) + __swig_setmethods__["cancelled"] = _sim_services.DRDMutexes_cancelled_set + __swig_getmethods__["cancelled"] = _sim_services.DRDMutexes_cancelled_get + if _newclass: + cancelled = _swig_property(_sim_services.DRDMutexes_cancelled_get, _sim_services.DRDMutexes_cancelled_set) + __swig_destroy__ = _sim_services.delete_DRDMutexes + __del__ = lambda self: None +DRDMutexes_swigregister = _sim_services.DRDMutexes_swigregister +DRDMutexes_swigregister(DRDMutexes) + +class DRDWriterThread(SysThread): + __swig_setmethods__ = {} + for _s in [SysThread]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, DRDWriterThread, name, value) + __swig_getmethods__ = {} + for _s in [SysThread]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, DRDWriterThread, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_DRDWriterThread(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def thread_body(self, *args): + return _sim_services.DRDWriterThread_thread_body(self, *args) + + def dump(self, *args): + return _sim_services.DRDWriterThread_dump(self, *args) + __swig_destroy__ = _sim_services.delete_DRDWriterThread + __del__ = lambda self: None +DRDWriterThread_swigregister = _sim_services.DRDWriterThread_swigregister +DRDWriterThread_swigregister(DRDWriterThread) + +class DataRecordDispatcher(Scheduler): + __swig_setmethods__ = {} + for _s in [Scheduler]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordDispatcher, name, value) + __swig_getmethods__ = {} + for _s in [Scheduler]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, DataRecordDispatcher, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_DataRecordDispatcher(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_DataRecordDispatcher + __del__ = lambda self: None + + def remove_files(self, *args): + return _sim_services.DataRecordDispatcher_remove_files(self, *args) + + def init(self, *args): + return _sim_services.DataRecordDispatcher_init(self, *args) + + def init_groups(self, *args): + return _sim_services.DataRecordDispatcher_init_groups(self, *args) + + def add_group(self, *args): + return _sim_services.DataRecordDispatcher_add_group(self, *args) + + def remove_group(self, *args): + return _sim_services.DataRecordDispatcher_remove_group(self, *args) + + def remove_all_groups(self, *args): + return _sim_services.DataRecordDispatcher_remove_all_groups(self, *args) + + def get_group(self, *args): + return _sim_services.DataRecordDispatcher_get_group(self, *args) + + def signal_thread(self, *args): + return _sim_services.DataRecordDispatcher_signal_thread(self, *args) + + def preload_checkpoint(self, *args): + return _sim_services.DataRecordDispatcher_preload_checkpoint(self, *args) + + def restart(self, *args): + return _sim_services.DataRecordDispatcher_restart(self, *args) + + def shutdown(self, *args): + return _sim_services.DataRecordDispatcher_shutdown(self, *args) + + def enable(self, *args): + return _sim_services.DataRecordDispatcher_enable(self, *args) + + def disable(self, *args): + return _sim_services.DataRecordDispatcher_disable(self, *args) + + def record_now_group(self, *args): + return _sim_services.DataRecordDispatcher_record_now_group(self, *args) + + def set_group_max_file_size(self, *args): + return _sim_services.DataRecordDispatcher_set_group_max_file_size(self, *args) + + def set_max_file_size(self, *args): + return _sim_services.DataRecordDispatcher_set_max_file_size(self, *args) + + def add_sim_object(self, *args): + return _sim_services.DataRecordDispatcher_add_sim_object(self, *args) + + def write_s_job_execution(self, *args): + return _sim_services.DataRecordDispatcher_write_s_job_execution(self, *args) + + def instrument_job_before(self, *args): + return _sim_services.DataRecordDispatcher_instrument_job_before(self, *args) + + def instrument_job_after(self, *args): + return _sim_services.DataRecordDispatcher_instrument_job_after(self, *args) + + def instrument_job_remove(self, *args): + return _sim_services.DataRecordDispatcher_instrument_job_remove(self, *args) + __swig_getmethods__["drd_writer_thread"] = _sim_services.DataRecordDispatcher_drd_writer_thread_get + if _newclass: + drd_writer_thread = _swig_property(_sim_services.DataRecordDispatcher_drd_writer_thread_get) +DataRecordDispatcher_swigregister = _sim_services.DataRecordDispatcher_swigregister +DataRecordDispatcher_swigregister(DataRecordDispatcher) + + +def dr_remove_files(*args): + return _sim_services.dr_remove_files(*args) +dr_remove_files = _sim_services.dr_remove_files + +def dr_enable(*args): + return _sim_services.dr_enable(*args) +dr_enable = _sim_services.dr_enable + +def dr_disable(*args): + return _sim_services.dr_disable(*args) +dr_disable = _sim_services.dr_disable + +def dr_enable_group(*args): + return _sim_services.dr_enable_group(*args) +dr_enable_group = _sim_services.dr_enable_group + +def dr_disable_group(*args): + return _sim_services.dr_disable_group(*args) +dr_disable_group = _sim_services.dr_disable_group + +def dr_record_now_group(*args): + return _sim_services.dr_record_now_group(*args) +dr_record_now_group = _sim_services.dr_record_now_group + +def dr_set_max_file_size(*args): + return _sim_services.dr_set_max_file_size(*args) +dr_set_max_file_size = _sim_services.dr_set_max_file_size + +def remove_all_data_record_groups(*args): + return _sim_services.remove_all_data_record_groups(*args) +remove_all_data_record_groups = _sim_services.remove_all_data_record_groups + +def set_max_size_record_group(*args): + return _sim_services.set_max_size_record_group(*args) +set_max_size_record_group = _sim_services.set_max_size_record_group + +def add_data_record_group(*args): + return _sim_services.add_data_record_group(*args) +add_data_record_group = _sim_services.add_data_record_group + +def remove_data_record_group(*args): + return _sim_services.remove_data_record_group(*args) +remove_data_record_group = _sim_services.remove_data_record_group + +def get_data_record_group(*args): + return _sim_services.get_data_record_group(*args) +get_data_record_group = _sim_services.get_data_record_group +class DebugPause(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, DebugPause, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, DebugPause, name) + __repr__ = _swig_repr + __swig_setmethods__["debug_pause_flag"] = _sim_services.DebugPause_debug_pause_flag_set + __swig_getmethods__["debug_pause_flag"] = _sim_services.DebugPause_debug_pause_flag_get + if _newclass: + debug_pause_flag = _swig_property(_sim_services.DebugPause_debug_pause_flag_get, _sim_services.DebugPause_debug_pause_flag_set) + + def __init__(self, *args): + this = _sim_services.new_DebugPause(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def debug_pause(self, *args): + return _sim_services.DebugPause_debug_pause(self, *args) + + def debug_signal(self, *args): + return _sim_services.DebugPause_debug_signal(self, *args) + + def debug_pause_on(self, *args): + return _sim_services.DebugPause_debug_pause_on(self, *args) + + def debug_pause_off(self, *args): + return _sim_services.DebugPause_debug_pause_off(self, *args) + __swig_destroy__ = _sim_services.delete_DebugPause + __del__ = lambda self: None +DebugPause_swigregister = _sim_services.DebugPause_swigregister +DebugPause_swigregister(DebugPause) + + +def debug_pause_on(*args): + return _sim_services.debug_pause_on(*args) +debug_pause_on = _sim_services.debug_pause_on + +def debug_pause_off(*args): + return _sim_services.debug_pause_off(*args) +debug_pause_off = _sim_services.debug_pause_off + +def debug_signal(*args): + return _sim_services.debug_signal(*args) +debug_signal = _sim_services.debug_signal +class EchoJobs(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, EchoJobs, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, EchoJobs, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_EchoJobs(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def echo_job(self, *args): + return _sim_services.EchoJobs_echo_job(self, *args) + + def echojobs_on(self, *args): + return _sim_services.EchoJobs_echojobs_on(self, *args) + + def echojobs_off(self, *args): + return _sim_services.EchoJobs_echojobs_off(self, *args) + __swig_destroy__ = _sim_services.delete_EchoJobs + __del__ = lambda self: None +EchoJobs_swigregister = _sim_services.EchoJobs_swigregister +EchoJobs_swigregister(EchoJobs) + + +def echo_jobs_on(*args): + return _sim_services.echo_jobs_on(*args) +echo_jobs_on = _sim_services.echo_jobs_on + +def echo_jobs_off(*args): + return _sim_services.echo_jobs_off(*args) +echo_jobs_off = _sim_services.echo_jobs_off +class Environment(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Environment, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Environment, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_Environment(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def add_var(self, *args): + return _sim_services.Environment_add_var(self, *args) + + def get_var(self, *args): + return _sim_services.Environment_get_var(self, *args) + + def print_vars(self, *args): + return _sim_services.Environment_print_vars(self, *args) + __swig_destroy__ = _sim_services.delete_Environment + __del__ = lambda self: None +Environment_swigregister = _sim_services.Environment_swigregister +Environment_swigregister(Environment) + + +def env_add_var(*args): + return _sim_services.env_add_var(*args) +env_add_var = _sim_services.env_add_var + +def get_trick_env(*args): + return _sim_services.get_trick_env(*args) +get_trick_env = _sim_services.get_trick_env + +def env_get_var(*args): + return _sim_services.env_get_var(*args) +env_get_var = _sim_services.env_get_var + +def env_print_vars(*args): + return _sim_services.env_print_vars(*args) +env_print_vars = _sim_services.env_print_vars +TT_MUTEX = _sim_services.TT_MUTEX +TT_FLAG = _sim_services.TT_FLAG +TT_EVENTFD = _sim_services.TT_EVENTFD +TT_FUTEX = _sim_services.TT_FUTEX +class ThreadTriggerBase(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerBase, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerBase, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_setmethods__["tt_type"] = _sim_services.ThreadTriggerBase_tt_type_set + __swig_getmethods__["tt_type"] = _sim_services.ThreadTriggerBase_tt_type_get + if _newclass: + tt_type = _swig_property(_sim_services.ThreadTriggerBase_tt_type_get, _sim_services.ThreadTriggerBase_tt_type_set) + __swig_destroy__ = _sim_services.delete_ThreadTriggerBase + __del__ = lambda self: None + + def init(self, *args): + return _sim_services.ThreadTriggerBase_init(self, *args) + + def fire(self, *args): + return _sim_services.ThreadTriggerBase_fire(self, *args) + + def wait(self, *args): + return _sim_services.ThreadTriggerBase_wait(self, *args) + + def dump(self, *args): + return _sim_services.ThreadTriggerBase_dump(self, *args) +ThreadTriggerBase_swigregister = _sim_services.ThreadTriggerBase_swigregister +ThreadTriggerBase_swigregister(ThreadTriggerBase) + +class ThreadTriggerMutex(ThreadTriggerBase): + __swig_setmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerMutex, name, value) + __swig_getmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerMutex, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_ThreadTriggerMutex(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def init(self, *args): + return _sim_services.ThreadTriggerMutex_init(self, *args) + + def fire(self, *args): + return _sim_services.ThreadTriggerMutex_fire(self, *args) + + def wait(self, *args): + return _sim_services.ThreadTriggerMutex_wait(self, *args) + + def dump(self, *args): + return _sim_services.ThreadTriggerMutex_dump(self, *args) + __swig_destroy__ = _sim_services.delete_ThreadTriggerMutex + __del__ = lambda self: None +ThreadTriggerMutex_swigregister = _sim_services.ThreadTriggerMutex_swigregister +ThreadTriggerMutex_swigregister(ThreadTriggerMutex) + +class ThreadTriggerFlag(ThreadTriggerBase): + __swig_setmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerFlag, name, value) + __swig_getmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerFlag, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_ThreadTriggerFlag(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def fire(self, *args): + return _sim_services.ThreadTriggerFlag_fire(self, *args) + + def wait(self, *args): + return _sim_services.ThreadTriggerFlag_wait(self, *args) + + def dump(self, *args): + return _sim_services.ThreadTriggerFlag_dump(self, *args) + __swig_destroy__ = _sim_services.delete_ThreadTriggerFlag + __del__ = lambda self: None +ThreadTriggerFlag_swigregister = _sim_services.ThreadTriggerFlag_swigregister +ThreadTriggerFlag_swigregister(ThreadTriggerFlag) + +class ThreadTriggerEventFD(ThreadTriggerBase): + __swig_setmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerEventFD, name, value) + __swig_getmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerEventFD, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_ThreadTriggerEventFD(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def fire(self, *args): + return _sim_services.ThreadTriggerEventFD_fire(self, *args) + + def wait(self, *args): + return _sim_services.ThreadTriggerEventFD_wait(self, *args) + + def dump(self, *args): + return _sim_services.ThreadTriggerEventFD_dump(self, *args) + __swig_destroy__ = _sim_services.delete_ThreadTriggerEventFD + __del__ = lambda self: None +ThreadTriggerEventFD_swigregister = _sim_services.ThreadTriggerEventFD_swigregister +ThreadTriggerEventFD_swigregister(ThreadTriggerEventFD) + +class ThreadTriggerFutex(ThreadTriggerBase): + __swig_setmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerFutex, name, value) + __swig_getmethods__ = {} + for _s in [ThreadTriggerBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerFutex, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_ThreadTriggerFutex(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def fire(self, *args): + return _sim_services.ThreadTriggerFutex_fire(self, *args) + + def wait(self, *args): + return _sim_services.ThreadTriggerFutex_wait(self, *args) + + def dump(self, *args): + return _sim_services.ThreadTriggerFutex_dump(self, *args) + __swig_destroy__ = _sim_services.delete_ThreadTriggerFutex + __del__ = lambda self: None +ThreadTriggerFutex_swigregister = _sim_services.ThreadTriggerFutex_swigregister +ThreadTriggerFutex_swigregister(ThreadTriggerFutex) + +class ThreadTriggerContainer(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerContainer, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerContainer, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_ThreadTriggerContainer(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def getThreadTrigger(self, *args): + return _sim_services.ThreadTriggerContainer_getThreadTrigger(self, *args) + + def setThreadTrigger(self, *args): + return _sim_services.ThreadTriggerContainer_setThreadTrigger(self, *args) + __swig_destroy__ = _sim_services.delete_ThreadTriggerContainer + __del__ = lambda self: None +ThreadTriggerContainer_swigregister = _sim_services.ThreadTriggerContainer_swigregister +ThreadTriggerContainer_swigregister(ThreadTriggerContainer) + +PROCESS_TYPE_SCHEDULED = _sim_services.PROCESS_TYPE_SCHEDULED +PROCESS_TYPE_ASYNC_CHILD = _sim_services.PROCESS_TYPE_ASYNC_CHILD +PROCESS_TYPE_AMF_CHILD = _sim_services.PROCESS_TYPE_AMF_CHILD +class Threads(ThreadBase): + __swig_setmethods__ = {} + for _s in [ThreadBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, Threads, name, value) + __swig_getmethods__ = {} + for _s in [ThreadBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, Threads, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_Threads(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def set_pthread_id(self, *args): + return _sim_services.Threads_set_pthread_id(self, *args) + + def thread_body(self, *args): + return _sim_services.Threads_thread_body(self, *args) + + def set_enabled(self, *args): + return _sim_services.Threads_set_enabled(self, *args) + + def set_process_type(self, *args): + return _sim_services.Threads_set_process_type(self, *args) + + def set_amf_cycle(self, *args): + return _sim_services.Threads_set_amf_cycle(self, *args) + + def time_tic_changed(self, *args): + return _sim_services.Threads_time_tic_changed(self, *args) + + def set_async_wait(self, *args): + return _sim_services.Threads_set_async_wait(self, *args) + + def clear_scheduled_queues(self, *args): + return _sim_services.Threads_clear_scheduled_queues(self, *args) + + def dump(self, *args): + return _sim_services.Threads_dump(self, *args) + __swig_setmethods__["enabled"] = _sim_services.Threads_enabled_set + __swig_getmethods__["enabled"] = _sim_services.Threads_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.Threads_enabled_get, _sim_services.Threads_enabled_set) + __swig_setmethods__["thread_id"] = _sim_services.Threads_thread_id_set + __swig_getmethods__["thread_id"] = _sim_services.Threads_thread_id_get + if _newclass: + thread_id = _swig_property(_sim_services.Threads_thread_id_get, _sim_services.Threads_thread_id_set) + __swig_setmethods__["curr_time_tics"] = _sim_services.Threads_curr_time_tics_set + __swig_getmethods__["curr_time_tics"] = _sim_services.Threads_curr_time_tics_get + if _newclass: + curr_time_tics = _swig_property(_sim_services.Threads_curr_time_tics_get, _sim_services.Threads_curr_time_tics_set) + __swig_setmethods__["amf_cycle"] = _sim_services.Threads_amf_cycle_set + __swig_getmethods__["amf_cycle"] = _sim_services.Threads_amf_cycle_get + if _newclass: + amf_cycle = _swig_property(_sim_services.Threads_amf_cycle_get, _sim_services.Threads_amf_cycle_set) + __swig_setmethods__["amf_cycle_tics"] = _sim_services.Threads_amf_cycle_tics_set + __swig_getmethods__["amf_cycle_tics"] = _sim_services.Threads_amf_cycle_tics_get + if _newclass: + amf_cycle_tics = _swig_property(_sim_services.Threads_amf_cycle_tics_get, _sim_services.Threads_amf_cycle_tics_set) + __swig_setmethods__["amf_next_tics"] = _sim_services.Threads_amf_next_tics_set + __swig_getmethods__["amf_next_tics"] = _sim_services.Threads_amf_next_tics_get + if _newclass: + amf_next_tics = _swig_property(_sim_services.Threads_amf_next_tics_get, _sim_services.Threads_amf_next_tics_set) + __swig_setmethods__["job_queue"] = _sim_services.Threads_job_queue_set + __swig_getmethods__["job_queue"] = _sim_services.Threads_job_queue_get + if _newclass: + job_queue = _swig_property(_sim_services.Threads_job_queue_get, _sim_services.Threads_job_queue_set) + __swig_setmethods__["top_of_frame_queue"] = _sim_services.Threads_top_of_frame_queue_set + __swig_getmethods__["top_of_frame_queue"] = _sim_services.Threads_top_of_frame_queue_get + if _newclass: + top_of_frame_queue = _swig_property(_sim_services.Threads_top_of_frame_queue_get, _sim_services.Threads_top_of_frame_queue_set) + __swig_setmethods__["end_of_frame_queue"] = _sim_services.Threads_end_of_frame_queue_set + __swig_getmethods__["end_of_frame_queue"] = _sim_services.Threads_end_of_frame_queue_get + if _newclass: + end_of_frame_queue = _swig_property(_sim_services.Threads_end_of_frame_queue_get, _sim_services.Threads_end_of_frame_queue_set) + __swig_setmethods__["curr_job"] = _sim_services.Threads_curr_job_set + __swig_getmethods__["curr_job"] = _sim_services.Threads_curr_job_get + if _newclass: + curr_job = _swig_property(_sim_services.Threads_curr_job_get, _sim_services.Threads_curr_job_set) + __swig_setmethods__["rt_nap"] = _sim_services.Threads_rt_nap_set + __swig_getmethods__["rt_nap"] = _sim_services.Threads_rt_nap_get + if _newclass: + rt_nap = _swig_property(_sim_services.Threads_rt_nap_get, _sim_services.Threads_rt_nap_set) + __swig_setmethods__["process_type"] = _sim_services.Threads_process_type_set + __swig_getmethods__["process_type"] = _sim_services.Threads_process_type_get + if _newclass: + process_type = _swig_property(_sim_services.Threads_process_type_get, _sim_services.Threads_process_type_set) + __swig_setmethods__["child_complete"] = _sim_services.Threads_child_complete_set + __swig_getmethods__["child_complete"] = _sim_services.Threads_child_complete_get + if _newclass: + child_complete = _swig_property(_sim_services.Threads_child_complete_get, _sim_services.Threads_child_complete_set) + __swig_setmethods__["running"] = _sim_services.Threads_running_set + __swig_getmethods__["running"] = _sim_services.Threads_running_get + if _newclass: + running = _swig_property(_sim_services.Threads_running_get, _sim_services.Threads_running_set) + __swig_setmethods__["trigger_container"] = _sim_services.Threads_trigger_container_set + __swig_getmethods__["trigger_container"] = _sim_services.Threads_trigger_container_get + if _newclass: + trigger_container = _swig_property(_sim_services.Threads_trigger_container_get, _sim_services.Threads_trigger_container_set) + __swig_setmethods__["shutdown_wait_async"] = _sim_services.Threads_shutdown_wait_async_set + __swig_getmethods__["shutdown_wait_async"] = _sim_services.Threads_shutdown_wait_async_get + if _newclass: + shutdown_wait_async = _swig_property(_sim_services.Threads_shutdown_wait_async_get, _sim_services.Threads_shutdown_wait_async_set) + __swig_destroy__ = _sim_services.delete_Threads + __del__ = lambda self: None +Threads_swigregister = _sim_services.Threads_swigregister +Threads_swigregister(Threads) + +NoCmd = _sim_services.NoCmd +FreezeCmd = _sim_services.FreezeCmd +RunCmd = _sim_services.RunCmd +ExitCmd = _sim_services.ExitCmd +Initialization = _sim_services.Initialization +Freeze = _sim_services.Freeze +Step = _sim_services.Step +Run = _sim_services.Run +ExitMode = _sim_services.ExitMode +class Executive(Scheduler): + __swig_setmethods__ = {} + for _s in [Scheduler]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, Executive, name, value) + __swig_getmethods__ = {} + for _s in [Scheduler]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, Executive, name) + __repr__ = _swig_repr + + def get_except_return(self, *args): + return _sim_services.Executive_get_except_return(self, *args) + + def __init__(self, *args): + this = _sim_services.new_Executive(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_Executive + __del__ = lambda self: None + + def get_all_jobs_vector(self, *args): + return _sim_services.Executive_get_all_jobs_vector(self, *args) + + def get_attach_debugger(self, *args): + return _sim_services.Executive_get_attach_debugger(self, *args) + + def get_current_version(self, *args): + return _sim_services.Executive_get_current_version(self, *args) + + def get_debugger_command(self, *args): + return _sim_services.Executive_get_debugger_command(self, *args) + + def get_exec_command(self, *args): + return _sim_services.Executive_get_exec_command(self, *args) + + def get_enable_freeze(self, *args): + return _sim_services.Executive_get_enable_freeze(self, *args) + + def get_freeze_command(self, *args): + return _sim_services.Executive_get_freeze_command(self, *args) + + def get_freeze_on_frame_boundary(self, *args): + return _sim_services.Executive_get_freeze_on_frame_boundary(self, *args) + + def get_freeze_frame(self, *args): + return _sim_services.Executive_get_freeze_frame(self, *args) + + def get_freeze_frame_tics(self, *args): + return _sim_services.Executive_get_freeze_frame_tics(self, *args) + + def get_mode(self, *args): + return _sim_services.Executive_get_mode(self, *args) + + def get_num_threads(self, *args): + return _sim_services.Executive_get_num_threads(self, *args) + + def get_old_time_tic_value(self, *args): + return _sim_services.Executive_get_old_time_tic_value(self, *args) + + def get_rt_nap(self, *args): + return _sim_services.Executive_get_rt_nap(self, *args) + + def get_scheduled_start_index(self, *args): + return _sim_services.Executive_get_scheduled_start_index(self, *args) + + def get_sim_objects(self, *args): + return _sim_services.Executive_get_sim_objects(self, *args) + + def get_sim_object_by_name(self, *args): + return _sim_services.Executive_get_sim_object_by_name(self, *args) + + def get_software_frame(self, *args): + return _sim_services.Executive_get_software_frame(self, *args) + + def get_software_frame_tics(self, *args): + return _sim_services.Executive_get_software_frame_tics(self, *args) + + def get_frame_count(self, *args): + return _sim_services.Executive_get_frame_count(self, *args) + + def get_freeze_frame_count(self, *args): + return _sim_services.Executive_get_freeze_frame_count(self, *args) + + def get_pthread_id(self, *args): + return _sim_services.Executive_get_pthread_id(self, *args) + + def get_stack_trace(self, *args): + return _sim_services.Executive_get_stack_trace(self, *args) + + def get_terminate_time(self, *args): + return _sim_services.Executive_get_terminate_time(self, *args) + + def get_thread_amf_cycle_time(self, *args): + return _sim_services.Executive_get_thread_amf_cycle_time(self, *args) + + def get_time_tic_value(self, *args): + return _sim_services.Executive_get_time_tic_value(self, *args) + + def get_time_tics(self, *args): + return _sim_services.Executive_get_time_tics(self, *args) + + def get_freeze_time_tics(self, *args): + return _sim_services.Executive_get_freeze_time_tics(self, *args) + + def get_trap_sigbus(self, *args): + return _sim_services.Executive_get_trap_sigbus(self, *args) + + def get_trap_sigfpe(self, *args): + return _sim_services.Executive_get_trap_sigfpe(self, *args) + + def get_trap_sigsegv(self, *args): + return _sim_services.Executive_get_trap_sigsegv(self, *args) + + def get_trap_sigabrt(self, *args): + return _sim_services.Executive_get_trap_sigabrt(self, *args) + + def get_trap_sigchld(self, *args): + return _sim_services.Executive_get_trap_sigchld(self, *args) + + def set_attach_debugger(self, *args): + return _sim_services.Executive_set_attach_debugger(self, *args) + + def set_debugger_command(self, *args): + return _sim_services.Executive_set_debugger_command(self, *args) + + def set_enable_freeze(self, *args): + return _sim_services.Executive_set_enable_freeze(self, *args) + + def set_freeze_command(self, *args): + return _sim_services.Executive_set_freeze_command(self, *args) + + def set_freeze_on_frame_boundary(self, *args): + return _sim_services.Executive_set_freeze_on_frame_boundary(self, *args) + + def set_freeze_frame(self, *args): + return _sim_services.Executive_set_freeze_frame(self, *args) + + def set_exec_command(self, *args): + return _sim_services.Executive_set_exec_command(self, *args) + + def set_rt_nap(self, *args): + return _sim_services.Executive_set_rt_nap(self, *args) + + def set_software_frame(self, *args): + return _sim_services.Executive_set_software_frame(self, *args) + + def set_stack_trace(self, *args): + return _sim_services.Executive_set_stack_trace(self, *args) + + def set_time(self, *args): + return _sim_services.Executive_set_time(self, *args) + + def set_time_tics(self, *args): + return _sim_services.Executive_set_time_tics(self, *args) + + def set_time_tic_value(self, *args): + return _sim_services.Executive_set_time_tic_value(self, *args) + + def set_terminate_time(self, *args): + return _sim_services.Executive_set_terminate_time(self, *args) + + def set_trap_sigbus(self, *args): + return _sim_services.Executive_set_trap_sigbus(self, *args) + + def set_trap_sigfpe(self, *args): + return _sim_services.Executive_set_trap_sigfpe(self, *args) + + def set_trap_sigsegv(self, *args): + return _sim_services.Executive_set_trap_sigsegv(self, *args) + + def set_trap_sigabrt(self, *args): + return _sim_services.Executive_set_trap_sigabrt(self, *args) + + def set_trap_sigchld(self, *args): + return _sim_services.Executive_set_trap_sigchld(self, *args) + + def get_sim_time(self, *args): + return _sim_services.Executive_get_sim_time(self, *args) + + def get_process_id(self, *args): + return _sim_services.Executive_get_process_id(self, *args) + + def get_freeze_job(self, *args): + return _sim_services.Executive_get_freeze_job(self, *args) + + def get_job(self, *args): + return _sim_services.Executive_get_job(self, *args) + + def get_curr_job(self, *args): + return _sim_services.Executive_get_curr_job(self, *args) + + def get_job_cycle(self, *args): + return _sim_services.Executive_get_job_cycle(self, *args) + + def set_job_onoff(self, *args): + return _sim_services.Executive_set_job_onoff(self, *args) + + def set_job_cycle(self, *args): + return _sim_services.Executive_set_job_cycle(self, *args) + + def set_sim_object_jobs_onoff(self, *args): + return _sim_services.Executive_set_sim_object_jobs_onoff(self, *args) + + def set_sim_object_onoff(self, *args): + return _sim_services.Executive_set_sim_object_onoff(self, *args) + + def get_sim_object_onoff(self, *args): + return _sim_services.Executive_get_sim_object_onoff(self, *args) + + def set_version_date_tag(self, *args): + return _sim_services.Executive_set_version_date_tag(self, *args) + + def set_build_date(self, *args): + return _sim_services.Executive_set_build_date(self, *args) + + def set_current_version(self, *args): + return _sim_services.Executive_set_current_version(self, *args) + + def process_sim_args(self, *args): + return _sim_services.Executive_process_sim_args(self, *args) + + def init(self, *args): + return _sim_services.Executive_init(self, *args) + + def call_default_data(self, *args): + return _sim_services.Executive_call_default_data(self, *args) + + def call_input_processor(self, *args): + return _sim_services.Executive_call_input_processor(self, *args) + + def call_initialization(self, *args): + return _sim_services.Executive_call_initialization(self, *args) + + def checkpoint(self, *args): + return _sim_services.Executive_checkpoint(self, *args) + + def post_checkpoint(self, *args): + return _sim_services.Executive_post_checkpoint(self, *args) + + def restart(self, *args): + return _sim_services.Executive_restart(self, *args) + + def clear_scheduled_queues(self, *args): + return _sim_services.Executive_clear_scheduled_queues(self, *args) + + def write_s_run_summary(self, *args): + return _sim_services.Executive_write_s_run_summary(self, *args) + + def create_threads(self, *args): + return _sim_services.Executive_create_threads(self, *args) + + def loop(self, *args): + return _sim_services.Executive_loop(self, *args) + + def loop_multi_thread(self, *args): + return _sim_services.Executive_loop_multi_thread(self, *args) + + def loop_single_thread(self, *args): + return _sim_services.Executive_loop_single_thread(self, *args) + + def async_freeze_to_exec_command(self, *args): + return _sim_services.Executive_async_freeze_to_exec_command(self, *args) + + def sched_freeze_to_exec_command(self, *args): + return _sim_services.Executive_sched_freeze_to_exec_command(self, *args) + + def advance_sim_time(self, *args): + return _sim_services.Executive_advance_sim_time(self, *args) + + def thread_sync(self, *args): + return _sim_services.Executive_thread_sync(self, *args) + + def scheduled_thread_sync(self, *args): + return _sim_services.Executive_scheduled_thread_sync(self, *args) + + def init_freeze_scheduled(self, *args): + return _sim_services.Executive_init_freeze_scheduled(self, *args) + + def freeze_loop(self, *args): + return _sim_services.Executive_freeze_loop(self, *args) + + def shutdown(self, *args): + return _sim_services.Executive_shutdown(self, *args) + + def add_scheduled_job_class(self, *args): + return _sim_services.Executive_add_scheduled_job_class(self, *args) + + def add_sim_object(self, *args): + return _sim_services.Executive_add_sim_object(self, *args) + + def add_jobs_to_queue(self, *args): + return _sim_services.Executive_add_jobs_to_queue(self, *args) + + def add_job_to_queue(self, *args): + return _sim_services.Executive_add_job_to_queue(self, *args) + + def delete_sim_object(self, *args): + return _sim_services.Executive_delete_sim_object(self, *args) + + def remove_jobs(self, *args): + return _sim_services.Executive_remove_jobs(self, *args) + + def add_depends_on_job(self, *args): + return _sim_services.Executive_add_depends_on_job(self, *args) + + def check_all_jobs_handled(self, *args): + return _sim_services.Executive_check_all_jobs_handled(self, *args) + + def check_all_job_cycle_times(self, *args): + return _sim_services.Executive_check_all_job_cycle_times(self, *args) + + def init_signal_handlers(self, *args): + return _sim_services.Executive_init_signal_handlers(self, *args) + + def signal_handler(self, *args): + return _sim_services.Executive_signal_handler(self, *args) + + def ctrl_c_handler(self, *args): + return _sim_services.Executive_ctrl_c_handler(self, *args) + + def term_handler(self, *args): + return _sim_services.Executive_term_handler(self, *args) + + def usr1_handler(self, *args): + return _sim_services.Executive_usr1_handler(self, *args) + + def fpe_handler(self, *args): + return _sim_services.Executive_fpe_handler(self, *args) + + def get_thread(self, *args): + return _sim_services.Executive_get_thread(self, *args) + + def set_thread_enabled(self, *args): + return _sim_services.Executive_set_thread_enabled(self, *args) + + def set_thread_process_type(self, *args): + return _sim_services.Executive_set_thread_process_type(self, *args) + + def set_thread_amf_cycle_time(self, *args): + return _sim_services.Executive_set_thread_amf_cycle_time(self, *args) + + def set_thread_async_wait(self, *args): + return _sim_services.Executive_set_thread_async_wait(self, *args) + + def set_thread_rt_semaphores(self, *args): + return _sim_services.Executive_set_thread_rt_semaphores(self, *args) + + def set_thread_priority(self, *args): + return _sim_services.Executive_set_thread_priority(self, *args) + + def set_thread_cpu_affinity(self, *args): + return _sim_services.Executive_set_thread_cpu_affinity(self, *args) + + def run(self, *args): + return _sim_services.Executive_run(self, *args) + + def freeze(self, *args): + return _sim_services.Executive_freeze(self, *args) + + def stop(self, *args): + return _sim_services.Executive_stop(self, *args) + + def instrument_job_before(self, *args): + return _sim_services.Executive_instrument_job_before(self, *args) + + def instrument_job_after(self, *args): + return _sim_services.Executive_instrument_job_after(self, *args) + + def instrument_job_remove(self, *args): + return _sim_services.Executive_instrument_job_remove(self, *args) + + def write_s_job_execution(self, *args): + return _sim_services.Executive_write_s_job_execution(self, *args) + + def register_scheduler(self, *args): + return _sim_services.Executive_register_scheduler(self, *args) + + def exec_terminate(self, *args): + return _sim_services.Executive_exec_terminate(self, *args) +Executive_swigregister = _sim_services.Executive_swigregister +Executive_swigregister(Executive) + +class ExecutiveException(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ExecutiveException, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ExecutiveException, name) + __repr__ = _swig_repr + __swig_setmethods__["ret_code"] = _sim_services.ExecutiveException_ret_code_set + __swig_getmethods__["ret_code"] = _sim_services.ExecutiveException_ret_code_get + if _newclass: + ret_code = _swig_property(_sim_services.ExecutiveException_ret_code_get, _sim_services.ExecutiveException_ret_code_set) + __swig_setmethods__["file"] = _sim_services.ExecutiveException_file_set + __swig_getmethods__["file"] = _sim_services.ExecutiveException_file_get + if _newclass: + file = _swig_property(_sim_services.ExecutiveException_file_get, _sim_services.ExecutiveException_file_set) + __swig_setmethods__["message"] = _sim_services.ExecutiveException_message_set + __swig_getmethods__["message"] = _sim_services.ExecutiveException_message_get + if _newclass: + message = _swig_property(_sim_services.ExecutiveException_message_get, _sim_services.ExecutiveException_message_set) + + def __init__(self, *args): + this = _sim_services.new_ExecutiveException(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ExecutiveException + __del__ = lambda self: None + + def what(self, *args): + return _sim_services.ExecutiveException_what(self, *args) +ExecutiveException_swigregister = _sim_services.ExecutiveException_swigregister +ExecutiveException_swigregister(ExecutiveException) + + +def exec_get_attach_debugger(*args): + return _sim_services.exec_get_attach_debugger(*args) +exec_get_attach_debugger = _sim_services.exec_get_attach_debugger + +def exec_get_current_version(*args): + return _sim_services.exec_get_current_version(*args) +exec_get_current_version = _sim_services.exec_get_current_version + +def exec_get_debugger_command(*args): + return _sim_services.exec_get_debugger_command(*args) +exec_get_debugger_command = _sim_services.exec_get_debugger_command + +def exec_get_enable_freeze(*args): + return _sim_services.exec_get_enable_freeze(*args) +exec_get_enable_freeze = _sim_services.exec_get_enable_freeze + +def exec_get_exec_command(*args): + return _sim_services.exec_get_exec_command(*args) +exec_get_exec_command = _sim_services.exec_get_exec_command + +def exec_get_frame_count(*args): + return _sim_services.exec_get_frame_count(*args) +exec_get_frame_count = _sim_services.exec_get_frame_count + +def exec_get_freeze_frame(*args): + return _sim_services.exec_get_freeze_frame(*args) +exec_get_freeze_frame = _sim_services.exec_get_freeze_frame + +def exec_get_freeze_frame_count(*args): + return _sim_services.exec_get_freeze_frame_count(*args) +exec_get_freeze_frame_count = _sim_services.exec_get_freeze_frame_count + +def exec_get_freeze_command(*args): + return _sim_services.exec_get_freeze_command(*args) +exec_get_freeze_command = _sim_services.exec_get_freeze_command + +def exec_get_freeze_on_frame_boundary(*args): + return _sim_services.exec_get_freeze_on_frame_boundary(*args) +exec_get_freeze_on_frame_boundary = _sim_services.exec_get_freeze_on_frame_boundary + +def exec_get_freeze_frame_tics(*args): + return _sim_services.exec_get_freeze_frame_tics(*args) +exec_get_freeze_frame_tics = _sim_services.exec_get_freeze_frame_tics + +def exec_get_freeze_time_tics(*args): + return _sim_services.exec_get_freeze_time_tics(*args) +exec_get_freeze_time_tics = _sim_services.exec_get_freeze_time_tics + +def exec_get_job_cycle(*args): + return _sim_services.exec_get_job_cycle(*args) +exec_get_job_cycle = _sim_services.exec_get_job_cycle + +def exec_get_mode(*args): + return _sim_services.exec_get_mode(*args) +exec_get_mode = _sim_services.exec_get_mode + +def exec_get_num_threads(*args): + return _sim_services.exec_get_num_threads(*args) +exec_get_num_threads = _sim_services.exec_get_num_threads + +def exec_get_old_time_tic_value(*args): + return _sim_services.exec_get_old_time_tic_value(*args) +exec_get_old_time_tic_value = _sim_services.exec_get_old_time_tic_value + +def exec_get_process_id(*args): + return _sim_services.exec_get_process_id(*args) +exec_get_process_id = _sim_services.exec_get_process_id + +def exec_get_rt_nap(*args): + return _sim_services.exec_get_rt_nap(*args) +exec_get_rt_nap = _sim_services.exec_get_rt_nap + +def exec_get_scheduled_start_index(*args): + return _sim_services.exec_get_scheduled_start_index(*args) +exec_get_scheduled_start_index = _sim_services.exec_get_scheduled_start_index + +def exec_get_sim_time(*args): + return _sim_services.exec_get_sim_time(*args) +exec_get_sim_time = _sim_services.exec_get_sim_time + +def exec_get_software_frame(*args): + return _sim_services.exec_get_software_frame(*args) +exec_get_software_frame = _sim_services.exec_get_software_frame + +def exec_get_software_frame_tics(*args): + return _sim_services.exec_get_software_frame_tics(*args) +exec_get_software_frame_tics = _sim_services.exec_get_software_frame_tics + +def exec_get_stack_trace(*args): + return _sim_services.exec_get_stack_trace(*args) +exec_get_stack_trace = _sim_services.exec_get_stack_trace + +def exec_get_terminate_time(*args): + return _sim_services.exec_get_terminate_time(*args) +exec_get_terminate_time = _sim_services.exec_get_terminate_time + +def exec_get_thread_amf_cycle_time(*args): + return _sim_services.exec_get_thread_amf_cycle_time(*args) +exec_get_thread_amf_cycle_time = _sim_services.exec_get_thread_amf_cycle_time + +def exec_get_time_tic_value(*args): + return _sim_services.exec_get_time_tic_value(*args) +exec_get_time_tic_value = _sim_services.exec_get_time_tic_value + +def exec_get_time_tics(*args): + return _sim_services.exec_get_time_tics(*args) +exec_get_time_tics = _sim_services.exec_get_time_tics + +def exec_get_trap_sigbus(*args): + return _sim_services.exec_get_trap_sigbus(*args) +exec_get_trap_sigbus = _sim_services.exec_get_trap_sigbus + +def exec_get_trap_sigfpe(*args): + return _sim_services.exec_get_trap_sigfpe(*args) +exec_get_trap_sigfpe = _sim_services.exec_get_trap_sigfpe + +def exec_get_trap_sigsegv(*args): + return _sim_services.exec_get_trap_sigsegv(*args) +exec_get_trap_sigsegv = _sim_services.exec_get_trap_sigsegv + +def exec_get_trap_sigabrt(*args): + return _sim_services.exec_get_trap_sigabrt(*args) +exec_get_trap_sigabrt = _sim_services.exec_get_trap_sigabrt + +def exec_get_trap_sigchld(*args): + return _sim_services.exec_get_trap_sigchld(*args) +exec_get_trap_sigchld = _sim_services.exec_get_trap_sigchld + +def exec_set_attach_debugger(*args): + return _sim_services.exec_set_attach_debugger(*args) +exec_set_attach_debugger = _sim_services.exec_set_attach_debugger + +def exec_set_debugger_command(*args): + return _sim_services.exec_set_debugger_command(*args) +exec_set_debugger_command = _sim_services.exec_set_debugger_command + +def exec_set_exec_command(*args): + return _sim_services.exec_set_exec_command(*args) +exec_set_exec_command = _sim_services.exec_set_exec_command + +def exec_set_freeze_command(*args): + return _sim_services.exec_set_freeze_command(*args) +exec_set_freeze_command = _sim_services.exec_set_freeze_command + +def exec_set_freeze_on_frame_boundary(*args): + return _sim_services.exec_set_freeze_on_frame_boundary(*args) +exec_set_freeze_on_frame_boundary = _sim_services.exec_set_freeze_on_frame_boundary + +def exec_set_freeze_frame(*args): + return _sim_services.exec_set_freeze_frame(*args) +exec_set_freeze_frame = _sim_services.exec_set_freeze_frame + +def exec_set_enable_freeze(*args): + return _sim_services.exec_set_enable_freeze(*args) +exec_set_enable_freeze = _sim_services.exec_set_enable_freeze + +def exec_set_job_cycle(*args): + return _sim_services.exec_set_job_cycle(*args) +exec_set_job_cycle = _sim_services.exec_set_job_cycle + +def exec_set_job_onoff(*args): + return _sim_services.exec_set_job_onoff(*args) +exec_set_job_onoff = _sim_services.exec_set_job_onoff + +def exec_set_rt_nap(*args): + return _sim_services.exec_set_rt_nap(*args) +exec_set_rt_nap = _sim_services.exec_set_rt_nap + +def exec_set_sim_object_onoff(*args): + return _sim_services.exec_set_sim_object_onoff(*args) +exec_set_sim_object_onoff = _sim_services.exec_set_sim_object_onoff + +def exec_set_software_frame(*args): + return _sim_services.exec_set_software_frame(*args) +exec_set_software_frame = _sim_services.exec_set_software_frame + +def exec_set_stack_trace(*args): + return _sim_services.exec_set_stack_trace(*args) +exec_set_stack_trace = _sim_services.exec_set_stack_trace + +def exec_set_terminate_time(*args): + return _sim_services.exec_set_terminate_time(*args) +exec_set_terminate_time = _sim_services.exec_set_terminate_time + +def exec_set_thread_enabled(*args): + return _sim_services.exec_set_thread_enabled(*args) +exec_set_thread_enabled = _sim_services.exec_set_thread_enabled + +def exec_set_thread_amf_cycle_time(*args): + return _sim_services.exec_set_thread_amf_cycle_time(*args) +exec_set_thread_amf_cycle_time = _sim_services.exec_set_thread_amf_cycle_time + +def exec_set_thread_async_cycle_time(*args): + return _sim_services.exec_set_thread_async_cycle_time(*args) +exec_set_thread_async_cycle_time = _sim_services.exec_set_thread_async_cycle_time + +def exec_set_thread_async_wait(*args): + return _sim_services.exec_set_thread_async_wait(*args) +exec_set_thread_async_wait = _sim_services.exec_set_thread_async_wait + +def exec_set_thread_rt_semaphores(*args): + return _sim_services.exec_set_thread_rt_semaphores(*args) +exec_set_thread_rt_semaphores = _sim_services.exec_set_thread_rt_semaphores + +def exec_set_thread_cpu_affinity(*args): + return _sim_services.exec_set_thread_cpu_affinity(*args) +exec_set_thread_cpu_affinity = _sim_services.exec_set_thread_cpu_affinity + +def exec_set_thread_priority(*args): + return _sim_services.exec_set_thread_priority(*args) +exec_set_thread_priority = _sim_services.exec_set_thread_priority + +def exec_set_thread_process_type(*args): + return _sim_services.exec_set_thread_process_type(*args) +exec_set_thread_process_type = _sim_services.exec_set_thread_process_type + +def exec_set_time(*args): + return _sim_services.exec_set_time(*args) +exec_set_time = _sim_services.exec_set_time + +def exec_set_time_tics(*args): + return _sim_services.exec_set_time_tics(*args) +exec_set_time_tics = _sim_services.exec_set_time_tics + +def exec_set_time_tic_value(*args): + return _sim_services.exec_set_time_tic_value(*args) +exec_set_time_tic_value = _sim_services.exec_set_time_tic_value + +def exec_set_trap_sigbus(*args): + return _sim_services.exec_set_trap_sigbus(*args) +exec_set_trap_sigbus = _sim_services.exec_set_trap_sigbus + +def exec_set_trap_sigfpe(*args): + return _sim_services.exec_set_trap_sigfpe(*args) +exec_set_trap_sigfpe = _sim_services.exec_set_trap_sigfpe + +def exec_set_trap_sigsegv(*args): + return _sim_services.exec_set_trap_sigsegv(*args) +exec_set_trap_sigsegv = _sim_services.exec_set_trap_sigsegv + +def exec_set_trap_sigabrt(*args): + return _sim_services.exec_set_trap_sigabrt(*args) +exec_set_trap_sigabrt = _sim_services.exec_set_trap_sigabrt + +def exec_set_trap_sigchld(*args): + return _sim_services.exec_set_trap_sigchld(*args) +exec_set_trap_sigchld = _sim_services.exec_set_trap_sigchld + +def exec_set_version_date_tag(*args): + return _sim_services.exec_set_version_date_tag(*args) +exec_set_version_date_tag = _sim_services.exec_set_version_date_tag + +def exec_set_build_date(*args): + return _sim_services.exec_set_build_date(*args) +exec_set_build_date = _sim_services.exec_set_build_date + +def exec_set_current_version(*args): + return _sim_services.exec_set_current_version(*args) +exec_set_current_version = _sim_services.exec_set_current_version + +def exec_freeze(*args): + return _sim_services.exec_freeze(*args) +exec_freeze = _sim_services.exec_freeze + +def exec_run(*args): + return _sim_services.exec_run(*args) +exec_run = _sim_services.exec_run + +def exec_signal_terminate(*args): + return _sim_services.exec_signal_terminate(*args) +exec_signal_terminate = _sim_services.exec_signal_terminate + +def exec_terminate(*args): + return _sim_services.exec_terminate(*args) +exec_terminate = _sim_services.exec_terminate + +def exec_terminate_with_return(*args): + return _sim_services.exec_terminate_with_return(*args) +exec_terminate_with_return = _sim_services.exec_terminate_with_return + +def exec_instrument_before(*args): + return _sim_services.exec_instrument_before(*args) +exec_instrument_before = _sim_services.exec_instrument_before + +def exec_instrument_after(*args): + return _sim_services.exec_instrument_after(*args) +exec_instrument_after = _sim_services.exec_instrument_after + +def exec_instrument_remove(*args): + return _sim_services.exec_instrument_remove(*args) +exec_instrument_remove = _sim_services.exec_instrument_remove + +def exec_add_scheduled_job_class(*args): + return _sim_services.exec_add_scheduled_job_class(*args) +exec_add_scheduled_job_class = _sim_services.exec_add_scheduled_job_class + +def exec_add_depends_on_job(*args): + return _sim_services.exec_add_depends_on_job(*args) +exec_add_depends_on_job = _sim_services.exec_add_depends_on_job + +def exec_get_exec_cpp(*args): + return _sim_services.exec_get_exec_cpp(*args) +exec_get_exec_cpp = _sim_services.exec_get_exec_cpp + +def exec_add_sim_object(*args): + return _sim_services.exec_add_sim_object(*args) +exec_add_sim_object = _sim_services.exec_add_sim_object + +def exec_remove_sim_object(*args): + return _sim_services.exec_remove_sim_object(*args) +exec_remove_sim_object = _sim_services.exec_remove_sim_object + +def exec_get_sim_objects(*args): + return _sim_services.exec_get_sim_objects(*args) +exec_get_sim_objects = _sim_services.exec_get_sim_objects + +def exec_get_job(*args): + return _sim_services.exec_get_job(*args) +exec_get_job = _sim_services.exec_get_job + +def exec_get_curr_job(*args): + return _sim_services.exec_get_curr_job(*args) +exec_get_curr_job = _sim_services.exec_get_curr_job + +def exec_get_thread(*args): + return _sim_services.exec_get_thread(*args) +exec_get_thread = _sim_services.exec_get_thread + +def exec_get_all_jobs_vector(*args): + return _sim_services.exec_get_all_jobs_vector(*args) +exec_get_all_jobs_vector = _sim_services.exec_get_all_jobs_vector + +def exec_register_scheduler(*args): + return _sim_services.exec_register_scheduler(*args) +exec_register_scheduler = _sim_services.exec_register_scheduler +class ExternalApplication(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ExternalApplication, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ExternalApplication, name) + __repr__ = _swig_repr + CLOSE = _sim_services.ExternalApplication_CLOSE + NOTIFY = _sim_services.ExternalApplication_NOTIFY + NOTHING = _sim_services.ExternalApplication_NOTHING + + def __init__(self, *args): + this = _sim_services.new_ExternalApplication(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ExternalApplication + __del__ = lambda self: None + + def set_startup_command(self, *args): + return _sim_services.ExternalApplication_set_startup_command(self, *args) + + def get_startup_command(self, *args): + return _sim_services.ExternalApplication_get_startup_command(self, *args) + + def get_startup_command_c_str(self, *args): + return _sim_services.ExternalApplication_get_startup_command_c_str(self, *args) + + def add_arguments(self, *args): + return _sim_services.ExternalApplication_add_arguments(self, *args) + + def set_arguments(self, *args): + return _sim_services.ExternalApplication_set_arguments(self, *args) + + def get_arguments(self, *args): + return _sim_services.ExternalApplication_get_arguments(self, *args) + + def set_host(self, *args): + return _sim_services.ExternalApplication_set_host(self, *args) + + def get_host(self, *args): + return _sim_services.ExternalApplication_get_host(self, *args) + + def set_port(self, *args): + return _sim_services.ExternalApplication_set_port(self, *args) + + def get_port(self, *args): + return _sim_services.ExternalApplication_get_port(self, *args) + + def set_auto_reconnect(self, *args): + return _sim_services.ExternalApplication_set_auto_reconnect(self, *args) + + def get_auto_reconnect(self, *args): + return _sim_services.ExternalApplication_get_auto_reconnect(self, *args) + + def set_cycle_period(self, *args): + return _sim_services.ExternalApplication_set_cycle_period(self, *args) + + def get_cycle_period(self, *args): + return _sim_services.ExternalApplication_get_cycle_period(self, *args) + + def set_minimum_cycle_period(self, *args): + return _sim_services.ExternalApplication_set_minimum_cycle_period(self, *args) + + def get_minimum_cycle_period(self, *args): + return _sim_services.ExternalApplication_get_minimum_cycle_period(self, *args) + + def set_disconnect_behavior(self, *args): + return _sim_services.ExternalApplication_set_disconnect_behavior(self, *args) + + def get_disconnect_behavior(self, *args): + return _sim_services.ExternalApplication_get_disconnect_behavior(self, *args) + + def set_height(self, *args): + return _sim_services.ExternalApplication_set_height(self, *args) + + def get_height(self, *args): + return _sim_services.ExternalApplication_get_height(self, *args) + + def set_width(self, *args): + return _sim_services.ExternalApplication_set_width(self, *args) + + def get_width(self, *args): + return _sim_services.ExternalApplication_get_width(self, *args) + + def set_x(self, *args): + return _sim_services.ExternalApplication_set_x(self, *args) + + def get_x(self, *args): + return _sim_services.ExternalApplication_get_x(self, *args) + + def set_y(self, *args): + return _sim_services.ExternalApplication_set_y(self, *args) + + def get_y(self, *args): + return _sim_services.ExternalApplication_get_y(self, *args) + + def launch(self, *args): + return _sim_services.ExternalApplication_launch(self, *args) +ExternalApplication_swigregister = _sim_services.ExternalApplication_swigregister +ExternalApplication_swigregister(ExternalApplication) + +class MalfunctionsTrickView(ExternalApplication): + __swig_setmethods__ = {} + for _s in [ExternalApplication]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MalfunctionsTrickView, name, value) + __swig_getmethods__ = {} + for _s in [ExternalApplication]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MalfunctionsTrickView, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MalfunctionsTrickView(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MalfunctionsTrickView + __del__ = lambda self: None +MalfunctionsTrickView_swigregister = _sim_services.MalfunctionsTrickView_swigregister +MalfunctionsTrickView_swigregister(MalfunctionsTrickView) + +class MonteMonitor(ExternalApplication): + __swig_setmethods__ = {} + for _s in [ExternalApplication]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteMonitor, name, value) + __swig_getmethods__ = {} + for _s in [ExternalApplication]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteMonitor, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteMonitor(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteMonitor + __del__ = lambda self: None +MonteMonitor_swigregister = _sim_services.MonteMonitor_swigregister +MonteMonitor_swigregister(MonteMonitor) + +class SimControlPanel(ExternalApplication): + __swig_setmethods__ = {} + for _s in [ExternalApplication]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, SimControlPanel, name, value) + __swig_getmethods__ = {} + for _s in [ExternalApplication]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, SimControlPanel, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_SimControlPanel(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["auto_exit"] = _sim_services.SimControlPanel_auto_exit_set + __swig_getmethods__["auto_exit"] = _sim_services.SimControlPanel_auto_exit_get + if _newclass: + auto_exit = _swig_property(_sim_services.SimControlPanel_auto_exit_get, _sim_services.SimControlPanel_auto_exit_set) + __swig_destroy__ = _sim_services.delete_SimControlPanel + __del__ = lambda self: None +SimControlPanel_swigregister = _sim_services.SimControlPanel_swigregister +SimControlPanel_swigregister(SimControlPanel) + +class StripChart(ExternalApplication): + __swig_setmethods__ = {} + for _s in [ExternalApplication]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, StripChart, name, value) + __swig_getmethods__ = {} + for _s in [ExternalApplication]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, StripChart, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_StripChart(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def set_arguments(self, *args): + return _sim_services.StripChart_set_arguments(self, *args) + + def set_input_file(self, *args): + return _sim_services.StripChart_set_input_file(self, *args) + + def get_input_file(self, *args): + return _sim_services.StripChart_get_input_file(self, *args) + __swig_destroy__ = _sim_services.delete_StripChart + __del__ = lambda self: None +StripChart_swigregister = _sim_services.StripChart_swigregister +StripChart_swigregister(StripChart) + +class TrickView(ExternalApplication): + __swig_setmethods__ = {} + for _s in [ExternalApplication]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, TrickView, name, value) + __swig_getmethods__ = {} + for _s in [ExternalApplication]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, TrickView, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_TrickView(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def set_arguments(self, *args): + return _sim_services.TrickView_set_arguments(self, *args) + + def set_strip_charts_only(self, *args): + return _sim_services.TrickView_set_strip_charts_only(self, *args) + + def get_strip_charts_only(self, *args): + return _sim_services.TrickView_get_strip_charts_only(self, *args) + + def set_auto_open_file(self, *args): + return _sim_services.TrickView_set_auto_open_file(self, *args) + + def get_auto_open_file(self, *args): + return _sim_services.TrickView_get_auto_open_file(self, *args) + + def set_auto_open_and_set_file(self, *args): + return _sim_services.TrickView_set_auto_open_and_set_file(self, *args) + + def get_auto_open_and_set_file(self, *args): + return _sim_services.TrickView_get_auto_open_and_set_file(self, *args) + + def set_auto_set_file(self, *args): + return _sim_services.TrickView_set_auto_set_file(self, *args) + + def get_auto_set_file(self, *args): + return _sim_services.TrickView_get_auto_set_file(self, *args) + __swig_destroy__ = _sim_services.delete_TrickView + __del__ = lambda self: None +TrickView_swigregister = _sim_services.TrickView_swigregister +TrickView_swigregister(TrickView) + + +def get_external_applications(*args): + return _sim_services.get_external_applications(*args) +get_external_applications = _sim_services.get_external_applications + +def add_external_application(*args): + return _sim_services.add_external_application(*args) +add_external_application = _sim_services.add_external_application + +def remove_external_application(*args): + return _sim_services.remove_external_application(*args) +remove_external_application = _sim_services.remove_external_application + +def remove_all_external_applications(*args): + return _sim_services.remove_all_external_applications(*args) +remove_all_external_applications = _sim_services.remove_all_external_applications + +def launch_all_external_applications(*args): + return _sim_services.launch_all_external_applications(*args) +launch_all_external_applications = _sim_services.launch_all_external_applications + +def sim_control_panel_set_enabled(*args): + return _sim_services.sim_control_panel_set_enabled(*args) +sim_control_panel_set_enabled = _sim_services.sim_control_panel_set_enabled + +def sim_control_panel_get_enabled(*args): + return _sim_services.sim_control_panel_get_enabled(*args) +sim_control_panel_get_enabled = _sim_services.sim_control_panel_get_enabled + +def sim_control_panel_auto_exit_set_enabled(*args): + return _sim_services.sim_control_panel_auto_exit_set_enabled(*args) +sim_control_panel_auto_exit_set_enabled = _sim_services.sim_control_panel_auto_exit_set_enabled + +def trick_view_set_enabled(*args): + return _sim_services.trick_view_set_enabled(*args) +trick_view_set_enabled = _sim_services.trick_view_set_enabled + +def trick_view_get_enabled(*args): + return _sim_services.trick_view_get_enabled(*args) +trick_view_get_enabled = _sim_services.trick_view_get_enabled + +def malfunctions_trick_view_set_enabled(*args): + return _sim_services.malfunctions_trick_view_set_enabled(*args) +malfunctions_trick_view_set_enabled = _sim_services.malfunctions_trick_view_set_enabled + +def malfunctions_trick_view_get_enabled(*args): + return _sim_services.malfunctions_trick_view_get_enabled(*args) +malfunctions_trick_view_get_enabled = _sim_services.malfunctions_trick_view_get_enabled + +def monte_monitor_set_enabled(*args): + return _sim_services.monte_monitor_set_enabled(*args) +monte_monitor_set_enabled = _sim_services.monte_monitor_set_enabled + +def monte_monitor_get_enabled(*args): + return _sim_services.monte_monitor_get_enabled(*args) +monte_monitor_get_enabled = _sim_services.monte_monitor_get_enabled + +def stripchart_set_enabled(*args): + return _sim_services.stripchart_set_enabled(*args) +stripchart_set_enabled = _sim_services.stripchart_set_enabled + +def stripchart_get_enabled(*args): + return _sim_services.stripchart_get_enabled(*args) +stripchart_get_enabled = _sim_services.stripchart_get_enabled + +def sim_control_panel_set_startup_command(*args): + return _sim_services.sim_control_panel_set_startup_command(*args) +sim_control_panel_set_startup_command = _sim_services.sim_control_panel_set_startup_command + +def sim_control_panel_get_startup_command(*args): + return _sim_services.sim_control_panel_get_startup_command(*args) +sim_control_panel_get_startup_command = _sim_services.sim_control_panel_get_startup_command + +def trick_view_set_startup_command(*args): + return _sim_services.trick_view_set_startup_command(*args) +trick_view_set_startup_command = _sim_services.trick_view_set_startup_command + +def trick_view_get_startup_command(*args): + return _sim_services.trick_view_get_startup_command(*args) +trick_view_get_startup_command = _sim_services.trick_view_get_startup_command + +def malfunctions_trick_view_set_startup_command(*args): + return _sim_services.malfunctions_trick_view_set_startup_command(*args) +malfunctions_trick_view_set_startup_command = _sim_services.malfunctions_trick_view_set_startup_command + +def malfunctions_trick_view_get_startup_command(*args): + return _sim_services.malfunctions_trick_view_get_startup_command(*args) +malfunctions_trick_view_get_startup_command = _sim_services.malfunctions_trick_view_get_startup_command + +def monte_monitor_set_startup_command(*args): + return _sim_services.monte_monitor_set_startup_command(*args) +monte_monitor_set_startup_command = _sim_services.monte_monitor_set_startup_command + +def monte_monitor_get_startup_command(*args): + return _sim_services.monte_monitor_get_startup_command(*args) +monte_monitor_get_startup_command = _sim_services.monte_monitor_get_startup_command + +def stripchart_set_startup_command(*args): + return _sim_services.stripchart_set_startup_command(*args) +stripchart_set_startup_command = _sim_services.stripchart_set_startup_command + +def stripchart_get_startup_command(*args): + return _sim_services.stripchart_get_startup_command(*args) +stripchart_get_startup_command = _sim_services.stripchart_get_startup_command + +def sim_control_panel_launch(*args): + return _sim_services.sim_control_panel_launch(*args) +sim_control_panel_launch = _sim_services.sim_control_panel_launch + +def trick_view_launch(*args): + return _sim_services.trick_view_launch(*args) +trick_view_launch = _sim_services.trick_view_launch + +def malfunctions_trick_view_launch(*args): + return _sim_services.malfunctions_trick_view_launch(*args) +malfunctions_trick_view_launch = _sim_services.malfunctions_trick_view_launch + +def monte_monitor_launch(*args): + return _sim_services.monte_monitor_launch(*args) +monte_monitor_launch = _sim_services.monte_monitor_launch + +def stripchart_launch(*args): + return _sim_services.stripchart_launch(*args) +stripchart_launch = _sim_services.stripchart_launch + +def trick_view_set_cycle_period(*args): + return _sim_services.trick_view_set_cycle_period(*args) +trick_view_set_cycle_period = _sim_services.trick_view_set_cycle_period + +def trick_view_add_auto_load_file(*args): + return _sim_services.trick_view_add_auto_load_file(*args) +trick_view_add_auto_load_file = _sim_services.trick_view_add_auto_load_file +class VAR_DECLARE(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VAR_DECLARE, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VAR_DECLARE, name) + __repr__ = _swig_repr + __swig_setmethods__["num_pointers"] = _sim_services.VAR_DECLARE_num_pointers_set + __swig_getmethods__["num_pointers"] = _sim_services.VAR_DECLARE_num_pointers_get + if _newclass: + num_pointers = _swig_property(_sim_services.VAR_DECLARE_num_pointers_get, _sim_services.VAR_DECLARE_num_pointers_set) + __swig_setmethods__["name"] = _sim_services.VAR_DECLARE_name_set + __swig_getmethods__["name"] = _sim_services.VAR_DECLARE_name_get + if _newclass: + name = _swig_property(_sim_services.VAR_DECLARE_name_get, _sim_services.VAR_DECLARE_name_set) + __swig_setmethods__["dim_list"] = _sim_services.VAR_DECLARE_dim_list_set + __swig_getmethods__["dim_list"] = _sim_services.VAR_DECLARE_dim_list_get + if _newclass: + dim_list = _swig_property(_sim_services.VAR_DECLARE_dim_list_get, _sim_services.VAR_DECLARE_dim_list_set) + __swig_setmethods__["value"] = _sim_services.VAR_DECLARE_value_set + __swig_getmethods__["value"] = _sim_services.VAR_DECLARE_value_get + if _newclass: + value = _swig_property(_sim_services.VAR_DECLARE_value_get, _sim_services.VAR_DECLARE_value_set) + + def __init__(self): + this = _sim_services.new_VAR_DECLARE() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VAR_DECLARE + __del__ = lambda self: None +VAR_DECLARE_swigregister = _sim_services.VAR_DECLARE_swigregister +VAR_DECLARE_swigregister(VAR_DECLARE) + +class VAR_LIST(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VAR_LIST, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VAR_LIST, name) + __repr__ = _swig_repr + __swig_setmethods__["num_vars"] = _sim_services.VAR_LIST_num_vars_set + __swig_getmethods__["num_vars"] = _sim_services.VAR_LIST_num_vars_get + if _newclass: + num_vars = _swig_property(_sim_services.VAR_LIST_num_vars_get, _sim_services.VAR_LIST_num_vars_set) + __swig_setmethods__["var_declare"] = _sim_services.VAR_LIST_var_declare_set + __swig_getmethods__["var_declare"] = _sim_services.VAR_LIST_var_declare_get + if _newclass: + var_declare = _swig_property(_sim_services.VAR_LIST_var_declare_get, _sim_services.VAR_LIST_var_declare_set) + + def __init__(self): + this = _sim_services.new_VAR_LIST() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VAR_LIST + __del__ = lambda self: None +VAR_LIST_swigregister = _sim_services.VAR_LIST_swigregister +VAR_LIST_swigregister(VAR_LIST) + +TRICK_LOCAL = _sim_services.TRICK_LOCAL +TRICK_EXTERN = _sim_services.TRICK_EXTERN +TRICK_ALLOC_MALLOC = _sim_services.TRICK_ALLOC_MALLOC +TRICK_ALLOC_NEW = _sim_services.TRICK_ALLOC_NEW +TRICK_ALLOC_OTHER = _sim_services.TRICK_ALLOC_OTHER +class ALLOC_INFO(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ALLOC_INFO, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ALLOC_INFO, name) + __repr__ = _swig_repr + __swig_setmethods__["start"] = _sim_services.ALLOC_INFO_start_set + __swig_getmethods__["start"] = _sim_services.ALLOC_INFO_start_get + if _newclass: + start = _swig_property(_sim_services.ALLOC_INFO_start_get, _sim_services.ALLOC_INFO_start_set) + __swig_setmethods__["end"] = _sim_services.ALLOC_INFO_end_set + __swig_getmethods__["end"] = _sim_services.ALLOC_INFO_end_get + if _newclass: + end = _swig_property(_sim_services.ALLOC_INFO_end_get, _sim_services.ALLOC_INFO_end_set) + __swig_setmethods__["name"] = _sim_services.ALLOC_INFO_name_set + __swig_getmethods__["name"] = _sim_services.ALLOC_INFO_name_get + if _newclass: + name = _swig_property(_sim_services.ALLOC_INFO_name_get, _sim_services.ALLOC_INFO_name_set) + __swig_setmethods__["size"] = _sim_services.ALLOC_INFO_size_set + __swig_getmethods__["size"] = _sim_services.ALLOC_INFO_size_get + if _newclass: + size = _swig_property(_sim_services.ALLOC_INFO_size_get, _sim_services.ALLOC_INFO_size_set) + __swig_setmethods__["sentinel_bytes"] = _sim_services.ALLOC_INFO_sentinel_bytes_set + __swig_getmethods__["sentinel_bytes"] = _sim_services.ALLOC_INFO_sentinel_bytes_get + if _newclass: + sentinel_bytes = _swig_property(_sim_services.ALLOC_INFO_sentinel_bytes_get, _sim_services.ALLOC_INFO_sentinel_bytes_set) + __swig_setmethods__["language"] = _sim_services.ALLOC_INFO_language_set + __swig_getmethods__["language"] = _sim_services.ALLOC_INFO_language_get + if _newclass: + language = _swig_property(_sim_services.ALLOC_INFO_language_get, _sim_services.ALLOC_INFO_language_set) + __swig_setmethods__["type"] = _sim_services.ALLOC_INFO_type_set + __swig_getmethods__["type"] = _sim_services.ALLOC_INFO_type_get + if _newclass: + type = _swig_property(_sim_services.ALLOC_INFO_type_get, _sim_services.ALLOC_INFO_type_set) + __swig_setmethods__["stcl"] = _sim_services.ALLOC_INFO_stcl_set + __swig_getmethods__["stcl"] = _sim_services.ALLOC_INFO_stcl_get + if _newclass: + stcl = _swig_property(_sim_services.ALLOC_INFO_stcl_get, _sim_services.ALLOC_INFO_stcl_set) + __swig_setmethods__["alloc_type"] = _sim_services.ALLOC_INFO_alloc_type_set + __swig_getmethods__["alloc_type"] = _sim_services.ALLOC_INFO_alloc_type_get + if _newclass: + alloc_type = _swig_property(_sim_services.ALLOC_INFO_alloc_type_get, _sim_services.ALLOC_INFO_alloc_type_set) + __swig_setmethods__["user_type_name"] = _sim_services.ALLOC_INFO_user_type_name_set + __swig_getmethods__["user_type_name"] = _sim_services.ALLOC_INFO_user_type_name_get + if _newclass: + user_type_name = _swig_property(_sim_services.ALLOC_INFO_user_type_name_get, _sim_services.ALLOC_INFO_user_type_name_set) + __swig_setmethods__["attr"] = _sim_services.ALLOC_INFO_attr_set + __swig_getmethods__["attr"] = _sim_services.ALLOC_INFO_attr_get + if _newclass: + attr = _swig_property(_sim_services.ALLOC_INFO_attr_get, _sim_services.ALLOC_INFO_attr_set) + __swig_setmethods__["num"] = _sim_services.ALLOC_INFO_num_set + __swig_getmethods__["num"] = _sim_services.ALLOC_INFO_num_get + if _newclass: + num = _swig_property(_sim_services.ALLOC_INFO_num_get, _sim_services.ALLOC_INFO_num_set) + __swig_setmethods__["num_index"] = _sim_services.ALLOC_INFO_num_index_set + __swig_getmethods__["num_index"] = _sim_services.ALLOC_INFO_num_index_get + if _newclass: + num_index = _swig_property(_sim_services.ALLOC_INFO_num_index_get, _sim_services.ALLOC_INFO_num_index_set) + __swig_setmethods__["index"] = _sim_services.ALLOC_INFO_index_set + __swig_getmethods__["index"] = _sim_services.ALLOC_INFO_index_get + if _newclass: + index = _swig_property(_sim_services.ALLOC_INFO_index_get, _sim_services.ALLOC_INFO_index_set) + __swig_setmethods__["id"] = _sim_services.ALLOC_INFO_id_set + __swig_getmethods__["id"] = _sim_services.ALLOC_INFO_id_get + if _newclass: + id = _swig_property(_sim_services.ALLOC_INFO_id_get, _sim_services.ALLOC_INFO_id_set) + __swig_setmethods__["alloced_in_memory_init"] = _sim_services.ALLOC_INFO_alloced_in_memory_init_set + __swig_getmethods__["alloced_in_memory_init"] = _sim_services.ALLOC_INFO_alloced_in_memory_init_get + if _newclass: + alloced_in_memory_init = _swig_property(_sim_services.ALLOC_INFO_alloced_in_memory_init_get, _sim_services.ALLOC_INFO_alloced_in_memory_init_set) + + def __init__(self): + this = _sim_services.new_ALLOC_INFO() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ALLOC_INFO + __del__ = lambda self: None +ALLOC_INFO_swigregister = _sim_services.ALLOC_INFO_swigregister +ALLOC_INFO_swigregister(ALLOC_INFO) + + +def TMM_declare_var(*args): + return _sim_services.TMM_declare_var(*args) +TMM_declare_var = _sim_services.TMM_declare_var + +def TMM_declare_var_1d(*args): + return _sim_services.TMM_declare_var_1d(*args) +TMM_declare_var_1d = _sim_services.TMM_declare_var_1d + +def TMM_declare_var_s(*args): + return _sim_services.TMM_declare_var_s(*args) +TMM_declare_var_s = _sim_services.TMM_declare_var_s + +def alloc_type(*args): + return _sim_services.alloc_type(*args) +alloc_type = _sim_services.alloc_type + +def TMM_declare_operatornew_var(*args): + return _sim_services.TMM_declare_operatornew_var(*args) +TMM_declare_operatornew_var = _sim_services.TMM_declare_operatornew_var + +def TMM_declare_ext_var(*args): + return _sim_services.TMM_declare_ext_var(*args) +TMM_declare_ext_var = _sim_services.TMM_declare_ext_var + +def TMM_declare_ext_var_1d(*args): + return _sim_services.TMM_declare_ext_var_1d(*args) +TMM_declare_ext_var_1d = _sim_services.TMM_declare_ext_var_1d + +def TMM_declare_ext_var_s(*args): + return _sim_services.TMM_declare_ext_var_s(*args) +TMM_declare_ext_var_s = _sim_services.TMM_declare_ext_var_s + +def TMM_resize_array_a(*args): + return _sim_services.TMM_resize_array_a(*args) +TMM_resize_array_a = _sim_services.TMM_resize_array_a + +def TMM_resize_array_n(*args): + return _sim_services.TMM_resize_array_n(*args) +TMM_resize_array_n = _sim_services.TMM_resize_array_n + +def TMM_resize_array_1d_a(*args): + return _sim_services.TMM_resize_array_1d_a(*args) +TMM_resize_array_1d_a = _sim_services.TMM_resize_array_1d_a + +def TMM_resize_array_1d_n(*args): + return _sim_services.TMM_resize_array_1d_n(*args) +TMM_resize_array_1d_n = _sim_services.TMM_resize_array_1d_n + +def TMM_strdup(*args): + return _sim_services.TMM_strdup(*args) +TMM_strdup = _sim_services.TMM_strdup + +def TMM_var_exists(*args): + return _sim_services.TMM_var_exists(*args) +TMM_var_exists = _sim_services.TMM_var_exists + +def TMM_is_alloced(*args): + return _sim_services.TMM_is_alloced(*args) +TMM_is_alloced = _sim_services.TMM_is_alloced + +def TMM_set_debug_level(*args): + return _sim_services.TMM_set_debug_level(*args) +TMM_set_debug_level = _sim_services.TMM_set_debug_level + +def TMM_reduced_checkpoint(*args): + return _sim_services.TMM_reduced_checkpoint(*args) +TMM_reduced_checkpoint = _sim_services.TMM_reduced_checkpoint + +def TMM_hexfloat_checkpoint(*args): + return _sim_services.TMM_hexfloat_checkpoint(*args) +TMM_hexfloat_checkpoint = _sim_services.TMM_hexfloat_checkpoint + +def TMM_clear_var_a(*args): + return _sim_services.TMM_clear_var_a(*args) +TMM_clear_var_a = _sim_services.TMM_clear_var_a + +def TMM_clear_var_n(*args): + return _sim_services.TMM_clear_var_n(*args) +TMM_clear_var_n = _sim_services.TMM_clear_var_n + +def TMM_delete_var_a(*args): + return _sim_services.TMM_delete_var_a(*args) +TMM_delete_var_a = _sim_services.TMM_delete_var_a + +def TMM_delete_var_n(*args): + return _sim_services.TMM_delete_var_n(*args) +TMM_delete_var_n = _sim_services.TMM_delete_var_n + +def TMM_delete_extern_var_a(*args): + return _sim_services.TMM_delete_extern_var_a(*args) +TMM_delete_extern_var_a = _sim_services.TMM_delete_extern_var_a + +def TMM_delete_extern_var_n(*args): + return _sim_services.TMM_delete_extern_var_n(*args) +TMM_delete_extern_var_n = _sim_services.TMM_delete_extern_var_n + +def TMM_write_checkpoint(*args): + return _sim_services.TMM_write_checkpoint(*args) +TMM_write_checkpoint = _sim_services.TMM_write_checkpoint + +def TMM_read_checkpoint(*args): + return _sim_services.TMM_read_checkpoint(*args) +TMM_read_checkpoint = _sim_services.TMM_read_checkpoint + +def TMM_read_checkpoint_from_string(*args): + return _sim_services.TMM_read_checkpoint_from_string(*args) +TMM_read_checkpoint_from_string = _sim_services.TMM_read_checkpoint_from_string + +def TMM_init_from_checkpoint(*args): + return _sim_services.TMM_init_from_checkpoint(*args) +TMM_init_from_checkpoint = _sim_services.TMM_init_from_checkpoint + +def TMM_add_shared_library_symbols(*args): + return _sim_services.TMM_add_shared_library_symbols(*args) +TMM_add_shared_library_symbols = _sim_services.TMM_add_shared_library_symbols + +def TMM_set_stl_restore(*args): + return _sim_services.TMM_set_stl_restore(*args) +TMM_set_stl_restore = _sim_services.TMM_set_stl_restore + +def ref_attributes(*args): + return _sim_services.ref_attributes(*args) +ref_attributes = _sim_services.ref_attributes + +def ref_var(*args): + return _sim_services.ref_var(*args) +ref_var = _sim_services.ref_var + +def get_size(*args): + return _sim_services.get_size(*args) +get_size = _sim_services.get_size + +def add_var(*args): + return _sim_services.add_var(*args) +add_var = _sim_services.add_var + +def add_vars(*args): + return _sim_services.add_vars(*args) +add_vars = _sim_services.add_vars + +def follow_address_path(*args): + return _sim_services.follow_address_path(*args) +follow_address_path = _sim_services.follow_address_path + +def ref_allocate(*args): + return _sim_services.ref_allocate(*args) +ref_allocate = _sim_services.ref_allocate + +def ref_assignment(*args): + return _sim_services.ref_assignment(*args) +ref_assignment = _sim_services.ref_assignment + +def get_truncated_size(*args): + return _sim_services.get_truncated_size(*args) +get_truncated_size = _sim_services.get_truncated_size + +def io_get_fixed_truncated_size(*args): + return _sim_services.io_get_fixed_truncated_size(*args) +io_get_fixed_truncated_size = _sim_services.io_get_fixed_truncated_size + +def get_alloc_info_of(*args): + return _sim_services.get_alloc_info_of(*args) +get_alloc_info_of = _sim_services.get_alloc_info_of + +def get_alloc_info_at(*args): + return _sim_services.get_alloc_info_at(*args) +get_alloc_info_at = _sim_services.get_alloc_info_at + +def set_alloc_name_at(*args): + return _sim_services.set_alloc_name_at(*args) +set_alloc_name_at = _sim_services.set_alloc_name_at + +def ref_free(*args): + return _sim_services.ref_free(*args) +ref_free = _sim_services.ref_free + +def get_enumerated(*args): + return _sim_services.get_enumerated(*args) +get_enumerated = _sim_services.get_enumerated + +def TMM_add_checkpoint_alloc_dependency(*args): + return _sim_services.TMM_add_checkpoint_alloc_dependency(*args) +TMM_add_checkpoint_alloc_dependency = _sim_services.TMM_add_checkpoint_alloc_dependency +MM_OK = _sim_services.MM_OK +MM_ASSIGNMENT_LIST = _sim_services.MM_ASSIGNMENT_LIST +MM_ERROR = _sim_services.MM_ERROR +MM_FILE_STREAM = _sim_services.MM_FILE_STREAM +MM_FILE_STREAM_HIGH_ARG = _sim_services.MM_FILE_STREAM_HIGH_ARG +MM_INIT_GT_512_LINE = _sim_services.MM_INIT_GT_512_LINE +MM_INVALID_UNITS = _sim_services.MM_INVALID_UNITS +MM_MAX_ERROR = _sim_services.MM_MAX_ERROR +MM_PARAMETER_ARRAY_DIM = _sim_services.MM_PARAMETER_ARRAY_DIM +MM_PARAMETER_ARRAY_SIZE = _sim_services.MM_PARAMETER_ARRAY_SIZE +MM_PARAMETER_TYPE = _sim_services.MM_PARAMETER_TYPE +MM_STRUCT_NOT_ASSIGNABLE = _sim_services.MM_STRUCT_NOT_ASSIGNABLE +MM_SYNTAX_ERROR = _sim_services.MM_SYNTAX_ERROR +MM_TOO_MANY_ARRAY_DIMENSIONS = _sim_services.MM_TOO_MANY_ARRAY_DIMENSIONS +MM_UNCLOSED_COMMENT = _sim_services.MM_UNCLOSED_COMMENT +MM_UNDEFINED_REFERENCE = _sim_services.MM_UNDEFINED_REFERENCE +MM_UNTERMINATED_STRING = _sim_services.MM_UNTERMINATED_STRING +BASE_NAME = _sim_services.BASE_NAME +ELEM_NAME = _sim_services.ELEM_NAME +ARRAY_INDEX = _sim_services.ARRAY_INDEX +class VarNameElement(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VarNameElement, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VarNameElement, name) + __repr__ = _swig_repr + __swig_setmethods__["type"] = _sim_services.VarNameElement_type_set + __swig_getmethods__["type"] = _sim_services.VarNameElement_type_get + if _newclass: + type = _swig_property(_sim_services.VarNameElement_type_get, _sim_services.VarNameElement_type_set) + __swig_setmethods__["index"] = _sim_services.VarNameElement_index_set + __swig_getmethods__["index"] = _sim_services.VarNameElement_index_get + if _newclass: + index = _swig_property(_sim_services.VarNameElement_index_get, _sim_services.VarNameElement_index_set) + __swig_setmethods__["name"] = _sim_services.VarNameElement_name_set + __swig_getmethods__["name"] = _sim_services.VarNameElement_name_get + if _newclass: + name = _swig_property(_sim_services.VarNameElement_name_get, _sim_services.VarNameElement_name_set) + + def __init__(self): + this = _sim_services.new_VarNameElement() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VarNameElement + __del__ = lambda self: None +VarNameElement_swigregister = _sim_services.VarNameElement_swigregister +VarNameElement_swigregister(VarNameElement) + +class CheckPointAgent(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, CheckPointAgent, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, CheckPointAgent, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_CheckPointAgent + __del__ = lambda self: None + + def input_perm_check(self, *args): + return _sim_services.CheckPointAgent_input_perm_check(self, *args) + + def output_perm_check(self, *args): + return _sim_services.CheckPointAgent_output_perm_check(self, *args) + + def write_decl(self, *args): + return _sim_services.CheckPointAgent_write_decl(self, *args) + + def push_basename(self, *args): + return _sim_services.CheckPointAgent_push_basename(self, *args) + + def push_struct_elem(self, *args): + return _sim_services.CheckPointAgent_push_struct_elem(self, *args) + + def push_array_elem(self, *args): + return _sim_services.CheckPointAgent_push_array_elem(self, *args) + + def pop_elem(self, *args): + return _sim_services.CheckPointAgent_pop_elem(self, *args) + + def assign_rvalue(self, *args): + return _sim_services.CheckPointAgent_assign_rvalue(self, *args) + + def restore(self, *args): + return _sim_services.CheckPointAgent_restore(self, *args) + + def set_reduced_checkpoint(self, *args): + return _sim_services.CheckPointAgent_set_reduced_checkpoint(self, *args) + + def set_hexfloat_checkpoint(self, *args): + return _sim_services.CheckPointAgent_set_hexfloat_checkpoint(self, *args) + + def set_debug_level(self, *args): + return _sim_services.CheckPointAgent_set_debug_level(self, *args) + __swig_setmethods__["reduced_checkpoint"] = _sim_services.CheckPointAgent_reduced_checkpoint_set + __swig_getmethods__["reduced_checkpoint"] = _sim_services.CheckPointAgent_reduced_checkpoint_get + if _newclass: + reduced_checkpoint = _swig_property(_sim_services.CheckPointAgent_reduced_checkpoint_get, _sim_services.CheckPointAgent_reduced_checkpoint_set) + __swig_setmethods__["hexfloat_checkpoint"] = _sim_services.CheckPointAgent_hexfloat_checkpoint_set + __swig_getmethods__["hexfloat_checkpoint"] = _sim_services.CheckPointAgent_hexfloat_checkpoint_get + if _newclass: + hexfloat_checkpoint = _swig_property(_sim_services.CheckPointAgent_hexfloat_checkpoint_get, _sim_services.CheckPointAgent_hexfloat_checkpoint_set) + __swig_setmethods__["debug_level"] = _sim_services.CheckPointAgent_debug_level_set + __swig_getmethods__["debug_level"] = _sim_services.CheckPointAgent_debug_level_get + if _newclass: + debug_level = _swig_property(_sim_services.CheckPointAgent_debug_level_get, _sim_services.CheckPointAgent_debug_level_set) + __swig_setmethods__["leftside_stack"] = _sim_services.CheckPointAgent_leftside_stack_set + __swig_getmethods__["leftside_stack"] = _sim_services.CheckPointAgent_leftside_stack_get + if _newclass: + leftside_stack = _swig_property(_sim_services.CheckPointAgent_leftside_stack_get, _sim_services.CheckPointAgent_leftside_stack_set) +CheckPointAgent_swigregister = _sim_services.CheckPointAgent_swigregister +CheckPointAgent_swigregister(CheckPointAgent) + +class MemoryManager(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MemoryManager, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MemoryManager, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MemoryManager(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MemoryManager + __del__ = lambda self: None + + def declare_var(self, *args): + return _sim_services.MemoryManager_declare_var(self, *args) + + def declare_operatornew_var(self, *args): + return _sim_services.MemoryManager_declare_operatornew_var(self, *args) + + def declare_extern_var(self, *args): + return _sim_services.MemoryManager_declare_extern_var(self, *args) + + def resize_array(self, *args): + return _sim_services.MemoryManager_resize_array(self, *args) + + def mm_strdup(self, *args): + return _sim_services.MemoryManager_mm_strdup(self, *args) + + def var_exists(self, *args): + return _sim_services.MemoryManager_var_exists(self, *args) + + def sizeof_type(self, *args): + return _sim_services.MemoryManager_sizeof_type(self, *args) + + def is_alloced(self, *args): + return _sim_services.MemoryManager_is_alloced(self, *args) + + def set_debug_level(self, *args): + return _sim_services.MemoryManager_set_debug_level(self, *args) + + def set_expanded_arrays(self, *args): + return _sim_services.MemoryManager_set_expanded_arrays(self, *args) + + def set_reduced_checkpoint(self, *args): + return _sim_services.MemoryManager_set_reduced_checkpoint(self, *args) + + def set_hexfloat_checkpoint(self, *args): + return _sim_services.MemoryManager_set_hexfloat_checkpoint(self, *args) + + def clear_var(self, *args): + return _sim_services.MemoryManager_clear_var(self, *args) + + def clear_all_vars(self, *args): + return _sim_services.MemoryManager_clear_all_vars(self, *args) + + def delete_var(self, *args): + return _sim_services.MemoryManager_delete_var(self, *args) + + def delete_extern_var(self, *args): + return _sim_services.MemoryManager_delete_extern_var(self, *args) + + def write_checkpoint(self, *args): + return _sim_services.MemoryManager_write_checkpoint(self, *args) + + def read_checkpoint(self, *args): + return _sim_services.MemoryManager_read_checkpoint(self, *args) + + def read_checkpoint_from_string(self, *args): + return _sim_services.MemoryManager_read_checkpoint_from_string(self, *args) + + def init_from_checkpoint(self, *args): + return _sim_services.MemoryManager_init_from_checkpoint(self, *args) + + def reset_memory(self, *args): + return _sim_services.MemoryManager_reset_memory(self, *args) + + def add_attr_info(self, *args): + return _sim_services.MemoryManager_add_attr_info(self, *args) + + def add_template_name_trans(self, *args): + return _sim_services.MemoryManager_add_template_name_trans(self, *args) + + def add_var(self, *args): + return _sim_services.MemoryManager_add_var(self, *args) + + def add_vars(self, *args): + return _sim_services.MemoryManager_add_vars(self, *args) + + def ref_allocate(self, *args): + return _sim_services.MemoryManager_ref_allocate(self, *args) + + def ref_attributes(self, *args): + return _sim_services.MemoryManager_ref_attributes(self, *args) + + def ref_name_from_address(self, *args): + return _sim_services.MemoryManager_ref_name_from_address(self, *args) + + def ref_assignment(self, *args): + return _sim_services.MemoryManager_ref_assignment(self, *args) + + def ref_var(self, *args): + return _sim_services.MemoryManager_ref_var(self, *args) + + def ref_dim(self, *args): + return _sim_services.MemoryManager_ref_dim(self, *args) + + def ref_name(self, *args): + return _sim_services.MemoryManager_ref_name(self, *args) + + def get_enumerated(self, *args): + return _sim_services.MemoryManager_get_enumerated(self, *args) + + def get_size(self, *args): + return _sim_services.MemoryManager_get_size(self, *args) + + def get_truncated_size(self, *args): + return _sim_services.MemoryManager_get_truncated_size(self, *args) + + def io_get_fixed_truncated_size(self, *args): + return _sim_services.MemoryManager_io_get_fixed_truncated_size(self, *args) + + def get_alloc_info_of(self, *args): + return _sim_services.MemoryManager_get_alloc_info_of(self, *args) + + def get_alloc_info_at(self, *args): + return _sim_services.MemoryManager_get_alloc_info_at(self, *args) + + def set_name_at(self, *args): + return _sim_services.MemoryManager_set_name_at(self, *args) + + def add_checkpoint_alloc_dependency(self, *args): + return _sim_services.MemoryManager_add_checkpoint_alloc_dependency(self, *args) + + def add_shared_library_symbols(self, *args): + return _sim_services.MemoryManager_add_shared_library_symbols(self, *args) + __swig_setmethods__["dlhandles"] = _sim_services.MemoryManager_dlhandles_set + __swig_getmethods__["dlhandles"] = _sim_services.MemoryManager_dlhandles_get + if _newclass: + dlhandles = _swig_property(_sim_services.MemoryManager_dlhandles_get, _sim_services.MemoryManager_dlhandles_set) + + def get_CheckPointAgent(self, *args): + return _sim_services.MemoryManager_get_CheckPointAgent(self, *args) + + def set_CheckPointAgent(self, *args): + return _sim_services.MemoryManager_set_CheckPointAgent(self, *args) + + def reset_CheckPointAgent(self, *args): + return _sim_services.MemoryManager_reset_CheckPointAgent(self, *args) + + def write_var(self, *args): + return _sim_services.MemoryManager_write_var(self, *args) + + def write_composite_var(self, *args): + return _sim_services.MemoryManager_write_composite_var(self, *args) + + def write_array_var(self, *args): + return _sim_services.MemoryManager_write_array_var(self, *args) + + def make_decl_string(self, *args): + return _sim_services.MemoryManager_make_decl_string(self, *args) + + def io_src_sizeof_user_type(self, *args): + return _sim_services.MemoryManager_io_src_sizeof_user_type(self, *args) + + def alloc_info_map_begin(self, *args): + return _sim_services.MemoryManager_alloc_info_map_begin(self, *args) + + def alloc_info_map_end(self, *args): + return _sim_services.MemoryManager_alloc_info_map_end(self, *args) + + def variable_map_begin(self, *args): + return _sim_services.MemoryManager_variable_map_begin(self, *args) + + def variable_map_end(self, *args): + return _sim_services.MemoryManager_variable_map_end(self, *args) + __swig_setmethods__["debug_level"] = _sim_services.MemoryManager_debug_level_set + __swig_getmethods__["debug_level"] = _sim_services.MemoryManager_debug_level_get + if _newclass: + debug_level = _swig_property(_sim_services.MemoryManager_debug_level_get, _sim_services.MemoryManager_debug_level_set) + if _newclass: + emitMessage = staticmethod(_sim_services.MemoryManager_emitMessage) + else: + emitMessage = _sim_services.MemoryManager_emitMessage + if _newclass: + emitError = staticmethod(_sim_services.MemoryManager_emitError) + else: + emitError = _sim_services.MemoryManager_emitError + if _newclass: + emitWarning = staticmethod(_sim_services.MemoryManager_emitWarning) + else: + emitWarning = _sim_services.MemoryManager_emitWarning + + def write_JSON_alloc_info(self, *args): + return _sim_services.MemoryManager_write_JSON_alloc_info(self, *args) + + def write_JSON_alloc_list(self, *args): + return _sim_services.MemoryManager_write_JSON_alloc_list(self, *args) + + def set_restore_stls_default(self, *args): + return _sim_services.MemoryManager_set_restore_stls_default(self, *args) + __swig_setmethods__["restore_stls_default"] = _sim_services.MemoryManager_restore_stls_default_set + __swig_getmethods__["restore_stls_default"] = _sim_services.MemoryManager_restore_stls_default_get + if _newclass: + restore_stls_default = _swig_property(_sim_services.MemoryManager_restore_stls_default_get, _sim_services.MemoryManager_restore_stls_default_set) +MemoryManager_swigregister = _sim_services.MemoryManager_swigregister +MemoryManager_swigregister(MemoryManager) + +def MemoryManager_emitMessage(*args): + return _sim_services.MemoryManager_emitMessage(*args) +MemoryManager_emitMessage = _sim_services.MemoryManager_emitMessage + +def MemoryManager_emitError(*args): + return _sim_services.MemoryManager_emitError(*args) +MemoryManager_emitError = _sim_services.MemoryManager_emitError + +def MemoryManager_emitWarning(*args): + return _sim_services.MemoryManager_emitWarning(*args) +MemoryManager_emitWarning = _sim_services.MemoryManager_emitWarning + +class FrameDataRecordGroup(DRBinary): + __swig_setmethods__ = {} + for _s in [DRBinary]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, FrameDataRecordGroup, name, value) + __swig_getmethods__ = {} + for _s in [DRBinary]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, FrameDataRecordGroup, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_FrameDataRecordGroup(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def start_timer(self, *args): + return _sim_services.FrameDataRecordGroup_start_timer(self, *args) + + def stop_timer(self, *args): + return _sim_services.FrameDataRecordGroup_stop_timer(self, *args) + + def frame_log_clear(self, *args): + return _sim_services.FrameDataRecordGroup_frame_log_clear(self, *args) + + def adjust_time(self, *args): + return _sim_services.FrameDataRecordGroup_adjust_time(self, *args) + + def enable(self, *args): + return _sim_services.FrameDataRecordGroup_enable(self, *args) + + def add_rec_job(self, *args): + return _sim_services.FrameDataRecordGroup_add_rec_job(self, *args) + + def restart(self, *args): + return _sim_services.FrameDataRecordGroup_restart(self, *args) + + def call_function(self, *args): + return _sim_services.FrameDataRecordGroup_call_function(self, *args) + __swig_destroy__ = _sim_services.delete_FrameDataRecordGroup + __del__ = lambda self: None +FrameDataRecordGroup_swigregister = _sim_services.FrameDataRecordGroup_swigregister +FrameDataRecordGroup_swigregister(FrameDataRecordGroup) + +class timeline_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, timeline_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, timeline_t, name) + __repr__ = _swig_repr + __swig_setmethods__["trick_job"] = _sim_services.timeline_t_trick_job_set + __swig_getmethods__["trick_job"] = _sim_services.timeline_t_trick_job_get + if _newclass: + trick_job = _swig_property(_sim_services.timeline_t_trick_job_get, _sim_services.timeline_t_trick_job_set) + __swig_setmethods__["id"] = _sim_services.timeline_t_id_set + __swig_getmethods__["id"] = _sim_services.timeline_t_id_get + if _newclass: + id = _swig_property(_sim_services.timeline_t_id_get, _sim_services.timeline_t_id_set) + __swig_setmethods__["start"] = _sim_services.timeline_t_start_set + __swig_getmethods__["start"] = _sim_services.timeline_t_start_get + if _newclass: + start = _swig_property(_sim_services.timeline_t_start_get, _sim_services.timeline_t_start_set) + __swig_setmethods__["stop"] = _sim_services.timeline_t_stop_set + __swig_getmethods__["stop"] = _sim_services.timeline_t_stop_get + if _newclass: + stop = _swig_property(_sim_services.timeline_t_stop_get, _sim_services.timeline_t_stop_set) + + def __init__(self): + this = _sim_services.new_timeline_t() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_timeline_t + __del__ = lambda self: None +timeline_t_swigregister = _sim_services.timeline_t_swigregister +timeline_t_swigregister(timeline_t) + +class FrameLog(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, FrameLog, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, FrameLog, name) + __repr__ = _swig_repr + __swig_setmethods__["frame_log_flag"] = _sim_services.FrameLog_frame_log_flag_set + __swig_getmethods__["frame_log_flag"] = _sim_services.FrameLog_frame_log_flag_get + if _newclass: + frame_log_flag = _swig_property(_sim_services.FrameLog_frame_log_flag_get, _sim_services.FrameLog_frame_log_flag_set) + __swig_setmethods__["drg_users"] = _sim_services.FrameLog_drg_users_set + __swig_getmethods__["drg_users"] = _sim_services.FrameLog_drg_users_get + if _newclass: + drg_users = _swig_property(_sim_services.FrameLog_drg_users_get, _sim_services.FrameLog_drg_users_set) + __swig_setmethods__["drg_trick"] = _sim_services.FrameLog_drg_trick_set + __swig_getmethods__["drg_trick"] = _sim_services.FrameLog_drg_trick_get + if _newclass: + drg_trick = _swig_property(_sim_services.FrameLog_drg_trick_get, _sim_services.FrameLog_drg_trick_set) + __swig_setmethods__["drg_frame"] = _sim_services.FrameLog_drg_frame_set + __swig_getmethods__["drg_frame"] = _sim_services.FrameLog_drg_frame_get + if _newclass: + drg_frame = _swig_property(_sim_services.FrameLog_drg_frame_get, _sim_services.FrameLog_drg_frame_set) + __swig_setmethods__["plots_per_page"] = _sim_services.FrameLog_plots_per_page_set + __swig_getmethods__["plots_per_page"] = _sim_services.FrameLog_plots_per_page_get + if _newclass: + plots_per_page = _swig_property(_sim_services.FrameLog_plots_per_page_get, _sim_services.FrameLog_plots_per_page_set) + __swig_setmethods__["timeline"] = _sim_services.FrameLog_timeline_set + __swig_getmethods__["timeline"] = _sim_services.FrameLog_timeline_get + if _newclass: + timeline = _swig_property(_sim_services.FrameLog_timeline_get, _sim_services.FrameLog_timeline_set) + __swig_setmethods__["timeline_other"] = _sim_services.FrameLog_timeline_other_set + __swig_getmethods__["timeline_other"] = _sim_services.FrameLog_timeline_other_get + if _newclass: + timeline_other = _swig_property(_sim_services.FrameLog_timeline_other_get, _sim_services.FrameLog_timeline_other_set) + __swig_setmethods__["num_threads"] = _sim_services.FrameLog_num_threads_set + __swig_getmethods__["num_threads"] = _sim_services.FrameLog_num_threads_get + if _newclass: + num_threads = _swig_property(_sim_services.FrameLog_num_threads_get, _sim_services.FrameLog_num_threads_set) + __swig_setmethods__["tl_max_samples"] = _sim_services.FrameLog_tl_max_samples_set + __swig_getmethods__["tl_max_samples"] = _sim_services.FrameLog_tl_max_samples_get + if _newclass: + tl_max_samples = _swig_property(_sim_services.FrameLog_tl_max_samples_get, _sim_services.FrameLog_tl_max_samples_set) + __swig_setmethods__["tl_count"] = _sim_services.FrameLog_tl_count_set + __swig_getmethods__["tl_count"] = _sim_services.FrameLog_tl_count_get + if _newclass: + tl_count = _swig_property(_sim_services.FrameLog_tl_count_get, _sim_services.FrameLog_tl_count_set) + __swig_setmethods__["tl_other_count"] = _sim_services.FrameLog_tl_other_count_set + __swig_getmethods__["tl_other_count"] = _sim_services.FrameLog_tl_other_count_get + if _newclass: + tl_other_count = _swig_property(_sim_services.FrameLog_tl_other_count_get, _sim_services.FrameLog_tl_other_count_set) + __swig_setmethods__["log_init_start"] = _sim_services.FrameLog_log_init_start_set + __swig_getmethods__["log_init_start"] = _sim_services.FrameLog_log_init_start_get + if _newclass: + log_init_start = _swig_property(_sim_services.FrameLog_log_init_start_get, _sim_services.FrameLog_log_init_start_set) + __swig_setmethods__["log_init_end"] = _sim_services.FrameLog_log_init_end_set + __swig_getmethods__["log_init_end"] = _sim_services.FrameLog_log_init_end_get + if _newclass: + log_init_end = _swig_property(_sim_services.FrameLog_log_init_end_get, _sim_services.FrameLog_log_init_end_set) + __swig_setmethods__["fp_time_main"] = _sim_services.FrameLog_fp_time_main_set + __swig_getmethods__["fp_time_main"] = _sim_services.FrameLog_fp_time_main_get + if _newclass: + fp_time_main = _swig_property(_sim_services.FrameLog_fp_time_main_get, _sim_services.FrameLog_fp_time_main_set) + __swig_setmethods__["fp_time_other"] = _sim_services.FrameLog_fp_time_other_set + __swig_getmethods__["fp_time_other"] = _sim_services.FrameLog_fp_time_other_get + if _newclass: + fp_time_other = _swig_property(_sim_services.FrameLog_fp_time_other_get, _sim_services.FrameLog_fp_time_other_set) + __swig_setmethods__["time_value_attr"] = _sim_services.FrameLog_time_value_attr_set + __swig_getmethods__["time_value_attr"] = _sim_services.FrameLog_time_value_attr_get + if _newclass: + time_value_attr = _swig_property(_sim_services.FrameLog_time_value_attr_get, _sim_services.FrameLog_time_value_attr_set) + __swig_setmethods__["msg_sim_object_name"] = _sim_services.FrameLog_msg_sim_object_name_set + __swig_getmethods__["msg_sim_object_name"] = _sim_services.FrameLog_msg_sim_object_name_get + if _newclass: + msg_sim_object_name = _swig_property(_sim_services.FrameLog_msg_sim_object_name_get, _sim_services.FrameLog_msg_sim_object_name_set) + __swig_setmethods__["dr_sim_object_name"] = _sim_services.FrameLog_dr_sim_object_name_set + __swig_getmethods__["dr_sim_object_name"] = _sim_services.FrameLog_dr_sim_object_name_get + if _newclass: + dr_sim_object_name = _swig_property(_sim_services.FrameLog_dr_sim_object_name_get, _sim_services.FrameLog_dr_sim_object_name_set) + __swig_setmethods__["rt_sim_object_name"] = _sim_services.FrameLog_rt_sim_object_name_set + __swig_getmethods__["rt_sim_object_name"] = _sim_services.FrameLog_rt_sim_object_name_get + if _newclass: + rt_sim_object_name = _swig_property(_sim_services.FrameLog_rt_sim_object_name_get, _sim_services.FrameLog_rt_sim_object_name_set) + __swig_setmethods__["ms_sim_object_name"] = _sim_services.FrameLog_ms_sim_object_name_set + __swig_getmethods__["ms_sim_object_name"] = _sim_services.FrameLog_ms_sim_object_name_get + if _newclass: + ms_sim_object_name = _swig_property(_sim_services.FrameLog_ms_sim_object_name_get, _sim_services.FrameLog_ms_sim_object_name_set) + __swig_setmethods__["clock"] = _sim_services.FrameLog_clock_set + __swig_getmethods__["clock"] = _sim_services.FrameLog_clock_get + if _newclass: + clock = _swig_property(_sim_services.FrameLog_clock_get, _sim_services.FrameLog_clock_set) + + def __init__(self, *args): + this = _sim_services.new_FrameLog(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_FrameLog + __del__ = lambda self: None + + def frame_clock_start(self, *args): + return _sim_services.FrameLog_frame_clock_start(self, *args) + + def frame_clock_stop(self, *args): + return _sim_services.FrameLog_frame_clock_stop(self, *args) + + def framelog_on(self, *args): + return _sim_services.FrameLog_framelog_on(self, *args) + + def framelog_off(self, *args): + return _sim_services.FrameLog_framelog_off(self, *args) + + def default_data(self, *args): + return _sim_services.FrameLog_default_data(self, *args) + + def create_DP_files(self, *args): + return _sim_services.FrameLog_create_DP_files(self, *args) + + def set_max_samples(self, *args): + return _sim_services.FrameLog_set_max_samples(self, *args) + + def clear_data_record_info(self, *args): + return _sim_services.FrameLog_clear_data_record_info(self, *args) + + def restart(self, *args): + return _sim_services.FrameLog_restart(self, *args) + + def shutdown(self, *args): + return _sim_services.FrameLog_shutdown(self, *args) + + def set_clock(self, *args): + return _sim_services.FrameLog_set_clock(self, *args) +FrameLog_swigregister = _sim_services.FrameLog_swigregister +FrameLog_swigregister(FrameLog) + + +def frame_log_on(*args): + return _sim_services.frame_log_on(*args) +frame_log_on = _sim_services.frame_log_on + +def frame_log_off(*args): + return _sim_services.frame_log_off(*args) +frame_log_off = _sim_services.frame_log_off + +def frame_log_set_max_samples(*args): + return _sim_services.frame_log_set_max_samples(*args) +frame_log_set_max_samples = _sim_services.frame_log_set_max_samples + +def ip_parse(*args): + return _sim_services.ip_parse(*args) +ip_parse = _sim_services.ip_parse +EVENT_NOTARGET = _sim_services.EVENT_NOTARGET +EVENT_BEFORETARGET = _sim_services.EVENT_BEFORETARGET +EVENT_AFTERTARGET = _sim_services.EVENT_AFTERTARGET +class Event(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Event, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Event, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_Event + __del__ = lambda self: None + + def get_name(self, *args): + return _sim_services.Event_get_name(self, *args) + + def set_name(self, *args): + return _sim_services.Event_set_name(self, *args) + + def is_active(self, *args): + return _sim_services.Event_is_active(self, *args) + + def activate(self, *args): + return _sim_services.Event_activate(self, *args) + + def deactivate(self, *args): + return _sim_services.Event_deactivate(self, *args) + + def set_thread(self, *args): + return _sim_services.Event_set_thread(self, *args) + + def get_thread(self, *args): + return _sim_services.Event_get_thread(self, *args) + + def set_before_after(self, *args): + return _sim_services.Event_set_before_after(self, *args) + + def get_before_after(self, *args): + return _sim_services.Event_get_before_after(self, *args) + + def set_cycle(self, *args): + return _sim_services.Event_set_cycle(self, *args) + + def get_cycle(self, *args): + return _sim_services.Event_get_cycle(self, *args) + + def get_cycle_tics(self, *args): + return _sim_services.Event_get_cycle_tics(self, *args) + + def get_next_tics(self, *args): + return _sim_services.Event_get_next_tics(self, *args) + + def set_next_tics(self, *args): + return _sim_services.Event_set_next_tics(self, *args) + + def advance_next_tics(self, *args): + return _sim_services.Event_advance_next_tics(self, *args) + + def get_free_on_removal(self, *args): + return _sim_services.Event_get_free_on_removal(self, *args) + + def set_free_on_removal(self, *args): + return _sim_services.Event_set_free_on_removal(self, *args) + + def get_target_name(self, *args): + return _sim_services.Event_get_target_name(self, *args) + + def set_target_name(self, *args): + return _sim_services.Event_set_target_name(self, *args) + + def get_target_inst(self, *args): + return _sim_services.Event_get_target_inst(self, *args) + + def set_target_inst(self, *args): + return _sim_services.Event_set_target_inst(self, *args) + + def process(self, *args): + return _sim_services.Event_process(self, *args) + + def add(self, *args): + return _sim_services.Event_add(self, *args) + + def remove(self, *args): + return _sim_services.Event_remove(self, *args) + + def restart(self, *args): + return _sim_services.Event_restart(self, *args) +Event_swigregister = _sim_services.Event_swigregister +Event_swigregister(Event) + +class condition_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, condition_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, condition_t, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_condition_t(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["enabled"] = _sim_services.condition_t_enabled_set + __swig_getmethods__["enabled"] = _sim_services.condition_t_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.condition_t_enabled_get, _sim_services.condition_t_enabled_set) + __swig_setmethods__["hold"] = _sim_services.condition_t_hold_set + __swig_getmethods__["hold"] = _sim_services.condition_t_hold_get + if _newclass: + hold = _swig_property(_sim_services.condition_t_hold_get, _sim_services.condition_t_hold_set) + __swig_setmethods__["fired"] = _sim_services.condition_t_fired_set + __swig_getmethods__["fired"] = _sim_services.condition_t_fired_get + if _newclass: + fired = _swig_property(_sim_services.condition_t_fired_get, _sim_services.condition_t_fired_set) + __swig_setmethods__["fired_count"] = _sim_services.condition_t_fired_count_set + __swig_getmethods__["fired_count"] = _sim_services.condition_t_fired_count_get + if _newclass: + fired_count = _swig_property(_sim_services.condition_t_fired_count_get, _sim_services.condition_t_fired_count_set) + __swig_setmethods__["fired_time"] = _sim_services.condition_t_fired_time_set + __swig_getmethods__["fired_time"] = _sim_services.condition_t_fired_time_get + if _newclass: + fired_time = _swig_property(_sim_services.condition_t_fired_time_get, _sim_services.condition_t_fired_time_set) + __swig_setmethods__["str"] = _sim_services.condition_t_str_set + __swig_getmethods__["str"] = _sim_services.condition_t_str_get + if _newclass: + str = _swig_property(_sim_services.condition_t_str_get, _sim_services.condition_t_str_set) + __swig_setmethods__["comment"] = _sim_services.condition_t_comment_set + __swig_getmethods__["comment"] = _sim_services.condition_t_comment_get + if _newclass: + comment = _swig_property(_sim_services.condition_t_comment_get, _sim_services.condition_t_comment_set) + __swig_setmethods__["ref"] = _sim_services.condition_t_ref_set + __swig_getmethods__["ref"] = _sim_services.condition_t_ref_get + if _newclass: + ref = _swig_property(_sim_services.condition_t_ref_get, _sim_services.condition_t_ref_set) + __swig_setmethods__["job"] = _sim_services.condition_t_job_set + __swig_getmethods__["job"] = _sim_services.condition_t_job_get + if _newclass: + job = _swig_property(_sim_services.condition_t_job_get, _sim_services.condition_t_job_set) + __swig_setmethods__["cond_type"] = _sim_services.condition_t_cond_type_set + __swig_getmethods__["cond_type"] = _sim_services.condition_t_cond_type_get + if _newclass: + cond_type = _swig_property(_sim_services.condition_t_cond_type_get, _sim_services.condition_t_cond_type_set) + __swig_destroy__ = _sim_services.delete_condition_t + __del__ = lambda self: None +condition_t_swigregister = _sim_services.condition_t_swigregister +condition_t_swigregister(condition_t) + +class action_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, action_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, action_t, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_action_t(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["enabled"] = _sim_services.action_t_enabled_set + __swig_getmethods__["enabled"] = _sim_services.action_t_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.action_t_enabled_get, _sim_services.action_t_enabled_set) + __swig_setmethods__["ran"] = _sim_services.action_t_ran_set + __swig_getmethods__["ran"] = _sim_services.action_t_ran_get + if _newclass: + ran = _swig_property(_sim_services.action_t_ran_get, _sim_services.action_t_ran_set) + __swig_setmethods__["ran_count"] = _sim_services.action_t_ran_count_set + __swig_getmethods__["ran_count"] = _sim_services.action_t_ran_count_get + if _newclass: + ran_count = _swig_property(_sim_services.action_t_ran_count_get, _sim_services.action_t_ran_count_set) + __swig_setmethods__["ran_time"] = _sim_services.action_t_ran_time_set + __swig_getmethods__["ran_time"] = _sim_services.action_t_ran_time_get + if _newclass: + ran_time = _swig_property(_sim_services.action_t_ran_time_get, _sim_services.action_t_ran_time_set) + __swig_setmethods__["str"] = _sim_services.action_t_str_set + __swig_getmethods__["str"] = _sim_services.action_t_str_get + if _newclass: + str = _swig_property(_sim_services.action_t_str_get, _sim_services.action_t_str_set) + __swig_setmethods__["comment"] = _sim_services.action_t_comment_set + __swig_getmethods__["comment"] = _sim_services.action_t_comment_get + if _newclass: + comment = _swig_property(_sim_services.action_t_comment_get, _sim_services.action_t_comment_set) + __swig_setmethods__["job"] = _sim_services.action_t_job_set + __swig_getmethods__["job"] = _sim_services.action_t_job_get + if _newclass: + job = _swig_property(_sim_services.action_t_job_get, _sim_services.action_t_job_set) + __swig_setmethods__["act_type"] = _sim_services.action_t_act_type_set + __swig_getmethods__["act_type"] = _sim_services.action_t_act_type_get + if _newclass: + act_type = _swig_property(_sim_services.action_t_act_type_get, _sim_services.action_t_act_type_set) + __swig_destroy__ = _sim_services.delete_action_t + __del__ = lambda self: None +action_t_swigregister = _sim_services.action_t_swigregister +action_t_swigregister(action_t) + +class IPPythonEvent(Event): + __swig_setmethods__ = {} + for _s in [Event]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, IPPythonEvent, name, value) + __swig_getmethods__ = {} + for _s in [Event]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, IPPythonEvent, name) + __repr__ = _swig_repr + __swig_setmethods__["added"] = _sim_services.IPPythonEvent_added_set + __swig_getmethods__["added"] = _sim_services.IPPythonEvent_added_get + if _newclass: + added = _swig_property(_sim_services.IPPythonEvent_added_get, _sim_services.IPPythonEvent_added_set) + __swig_setmethods__["is_user_event"] = _sim_services.IPPythonEvent_is_user_event_set + __swig_getmethods__["is_user_event"] = _sim_services.IPPythonEvent_is_user_event_get + if _newclass: + is_user_event = _swig_property(_sim_services.IPPythonEvent_is_user_event_get, _sim_services.IPPythonEvent_is_user_event_set) + __swig_setmethods__["manual"] = _sim_services.IPPythonEvent_manual_set + __swig_getmethods__["manual"] = _sim_services.IPPythonEvent_manual_get + if _newclass: + manual = _swig_property(_sim_services.IPPythonEvent_manual_get, _sim_services.IPPythonEvent_manual_set) + __swig_setmethods__["manual_fired"] = _sim_services.IPPythonEvent_manual_fired_set + __swig_getmethods__["manual_fired"] = _sim_services.IPPythonEvent_manual_fired_get + if _newclass: + manual_fired = _swig_property(_sim_services.IPPythonEvent_manual_fired_get, _sim_services.IPPythonEvent_manual_fired_set) + __swig_setmethods__["info_msg"] = _sim_services.IPPythonEvent_info_msg_set + __swig_getmethods__["info_msg"] = _sim_services.IPPythonEvent_info_msg_get + if _newclass: + info_msg = _swig_property(_sim_services.IPPythonEvent_info_msg_get, _sim_services.IPPythonEvent_info_msg_set) + __swig_setmethods__["cond_all"] = _sim_services.IPPythonEvent_cond_all_set + __swig_getmethods__["cond_all"] = _sim_services.IPPythonEvent_cond_all_get + if _newclass: + cond_all = _swig_property(_sim_services.IPPythonEvent_cond_all_get, _sim_services.IPPythonEvent_cond_all_set) + __swig_setmethods__["fired"] = _sim_services.IPPythonEvent_fired_set + __swig_getmethods__["fired"] = _sim_services.IPPythonEvent_fired_get + if _newclass: + fired = _swig_property(_sim_services.IPPythonEvent_fired_get, _sim_services.IPPythonEvent_fired_set) + __swig_setmethods__["hold"] = _sim_services.IPPythonEvent_hold_set + __swig_getmethods__["hold"] = _sim_services.IPPythonEvent_hold_get + if _newclass: + hold = _swig_property(_sim_services.IPPythonEvent_hold_get, _sim_services.IPPythonEvent_hold_set) + __swig_setmethods__["ran"] = _sim_services.IPPythonEvent_ran_set + __swig_getmethods__["ran"] = _sim_services.IPPythonEvent_ran_get + if _newclass: + ran = _swig_property(_sim_services.IPPythonEvent_ran_get, _sim_services.IPPythonEvent_ran_set) + __swig_setmethods__["condition_count"] = _sim_services.IPPythonEvent_condition_count_set + __swig_getmethods__["condition_count"] = _sim_services.IPPythonEvent_condition_count_get + if _newclass: + condition_count = _swig_property(_sim_services.IPPythonEvent_condition_count_get, _sim_services.IPPythonEvent_condition_count_set) + __swig_setmethods__["fired_count"] = _sim_services.IPPythonEvent_fired_count_set + __swig_getmethods__["fired_count"] = _sim_services.IPPythonEvent_fired_count_get + if _newclass: + fired_count = _swig_property(_sim_services.IPPythonEvent_fired_count_get, _sim_services.IPPythonEvent_fired_count_set) + __swig_setmethods__["fired_time"] = _sim_services.IPPythonEvent_fired_time_set + __swig_getmethods__["fired_time"] = _sim_services.IPPythonEvent_fired_time_get + if _newclass: + fired_time = _swig_property(_sim_services.IPPythonEvent_fired_time_get, _sim_services.IPPythonEvent_fired_time_set) + __swig_setmethods__["action_count"] = _sim_services.IPPythonEvent_action_count_set + __swig_getmethods__["action_count"] = _sim_services.IPPythonEvent_action_count_get + if _newclass: + action_count = _swig_property(_sim_services.IPPythonEvent_action_count_get, _sim_services.IPPythonEvent_action_count_set) + __swig_setmethods__["ran_count"] = _sim_services.IPPythonEvent_ran_count_set + __swig_getmethods__["ran_count"] = _sim_services.IPPythonEvent_ran_count_get + if _newclass: + ran_count = _swig_property(_sim_services.IPPythonEvent_ran_count_get, _sim_services.IPPythonEvent_ran_count_set) + __swig_setmethods__["ran_time"] = _sim_services.IPPythonEvent_ran_time_set + __swig_getmethods__["ran_time"] = _sim_services.IPPythonEvent_ran_time_get + if _newclass: + ran_time = _swig_property(_sim_services.IPPythonEvent_ran_time_get, _sim_services.IPPythonEvent_ran_time_set) + __swig_setmethods__["condition_list"] = _sim_services.IPPythonEvent_condition_list_set + __swig_getmethods__["condition_list"] = _sim_services.IPPythonEvent_condition_list_get + if _newclass: + condition_list = _swig_property(_sim_services.IPPythonEvent_condition_list_get, _sim_services.IPPythonEvent_condition_list_set) + __swig_setmethods__["action_list"] = _sim_services.IPPythonEvent_action_list_set + __swig_getmethods__["action_list"] = _sim_services.IPPythonEvent_action_list_get + if _newclass: + action_list = _swig_property(_sim_services.IPPythonEvent_action_list_get, _sim_services.IPPythonEvent_action_list_set) + + def __init__(self, *args): + this = _sim_services.new_IPPythonEvent(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_IPPythonEvent + __del__ = lambda self: None + + def condition_all(self, *args): + return _sim_services.IPPythonEvent_condition_all(self, *args) + + def condition_any(self, *args): + return _sim_services.IPPythonEvent_condition_any(self, *args) + + def manual_on(self, *args): + return _sim_services.IPPythonEvent_manual_on(self, *args) + + def manual_fire(self, *args): + return _sim_services.IPPythonEvent_manual_fire(self, *args) + + def manual_off(self, *args): + return _sim_services.IPPythonEvent_manual_off(self, *args) + + def manual_done(self, *args): + return _sim_services.IPPythonEvent_manual_done(self, *args) + if _newclass: + set_event_info_msg_on = staticmethod(_sim_services.IPPythonEvent_set_event_info_msg_on) + else: + set_event_info_msg_on = _sim_services.IPPythonEvent_set_event_info_msg_on + if _newclass: + set_event_info_msg_off = staticmethod(_sim_services.IPPythonEvent_set_event_info_msg_off) + else: + set_event_info_msg_off = _sim_services.IPPythonEvent_set_event_info_msg_off + if _newclass: + terminate_on_event_parse_error = staticmethod(_sim_services.IPPythonEvent_terminate_on_event_parse_error) + else: + terminate_on_event_parse_error = _sim_services.IPPythonEvent_terminate_on_event_parse_error + + def restart(self, *args): + return _sim_services.IPPythonEvent_restart(self, *args) + + def condition(self, *args): + return _sim_services.IPPythonEvent_condition(self, *args) + + def condition_var(self, *args): + return _sim_services.IPPythonEvent_condition_var(self, *args) + + def condition_job(self, *args): + return _sim_services.IPPythonEvent_condition_job(self, *args) + + def condition_hold_on(self, *args): + return _sim_services.IPPythonEvent_condition_hold_on(self, *args) + + def condition_hold_off(self, *args): + return _sim_services.IPPythonEvent_condition_hold_off(self, *args) + + def condition_enable(self, *args): + return _sim_services.IPPythonEvent_condition_enable(self, *args) + + def condition_disable(self, *args): + return _sim_services.IPPythonEvent_condition_disable(self, *args) + + def condition_fired(self, *args): + return _sim_services.IPPythonEvent_condition_fired(self, *args) + + def condition_fired_count(self, *args): + return _sim_services.IPPythonEvent_condition_fired_count(self, *args) + + def condition_fired_time(self, *args): + return _sim_services.IPPythonEvent_condition_fired_time(self, *args) + + def condition_string(self, *args): + return _sim_services.IPPythonEvent_condition_string(self, *args) + + def action(self, *args): + return _sim_services.IPPythonEvent_action(self, *args) + + def action_job(self, *args): + return _sim_services.IPPythonEvent_action_job(self, *args) + + def action_job_on(self, *args): + return _sim_services.IPPythonEvent_action_job_on(self, *args) + + def action_job_off(self, *args): + return _sim_services.IPPythonEvent_action_job_off(self, *args) + + def action_enable(self, *args): + return _sim_services.IPPythonEvent_action_enable(self, *args) + + def action_disable(self, *args): + return _sim_services.IPPythonEvent_action_disable(self, *args) + + def action_ran(self, *args): + return _sim_services.IPPythonEvent_action_ran(self, *args) + + def action_ran_count(self, *args): + return _sim_services.IPPythonEvent_action_ran_count(self, *args) + + def action_ran_time(self, *args): + return _sim_services.IPPythonEvent_action_ran_time(self, *args) + + def process(self, *args): + return _sim_services.IPPythonEvent_process(self, *args) + + def process_user_event(self, *args): + return _sim_services.IPPythonEvent_process_user_event(self, *args) + + def add(self, *args): + return _sim_services.IPPythonEvent_add(self, *args) + + def remove(self, *args): + return _sim_services.IPPythonEvent_remove(self, *args) + if _newclass: + set_python_processor = staticmethod(_sim_services.IPPythonEvent_set_python_processor) + else: + set_python_processor = _sim_services.IPPythonEvent_set_python_processor + if _newclass: + set_mtv = staticmethod(_sim_services.IPPythonEvent_set_mtv) + else: + set_mtv = _sim_services.IPPythonEvent_set_mtv + + def __getitem__(self, *args): + return _sim_services.IPPythonEvent___getitem__(self, *args) + + def __len__(self, *args): + return _sim_services.IPPythonEvent___len__(self, *args) +IPPythonEvent_swigregister = _sim_services.IPPythonEvent_swigregister +IPPythonEvent_swigregister(IPPythonEvent) + +def IPPythonEvent_set_event_info_msg_on(*args): + return _sim_services.IPPythonEvent_set_event_info_msg_on(*args) +IPPythonEvent_set_event_info_msg_on = _sim_services.IPPythonEvent_set_event_info_msg_on + +def IPPythonEvent_set_event_info_msg_off(*args): + return _sim_services.IPPythonEvent_set_event_info_msg_off(*args) +IPPythonEvent_set_event_info_msg_off = _sim_services.IPPythonEvent_set_event_info_msg_off + +def IPPythonEvent_terminate_on_event_parse_error(*args): + return _sim_services.IPPythonEvent_terminate_on_event_parse_error(*args) +IPPythonEvent_terminate_on_event_parse_error = _sim_services.IPPythonEvent_terminate_on_event_parse_error + +def IPPythonEvent_set_python_processor(*args): + return _sim_services.IPPythonEvent_set_python_processor(*args) +IPPythonEvent_set_python_processor = _sim_services.IPPythonEvent_set_python_processor + +def IPPythonEvent_set_mtv(*args): + return _sim_services.IPPythonEvent_set_mtv(*args) +IPPythonEvent_set_mtv = _sim_services.IPPythonEvent_set_mtv + + +def ippython_new_event(*args): + return _sim_services.ippython_new_event(*args) +ippython_new_event = _sim_services.ippython_new_event + +def ippython_delete_event(*args): + return _sim_services.ippython_delete_event(*args) +ippython_delete_event = _sim_services.ippython_delete_event + +def ippython_add_event(*args): + return _sim_services.ippython_add_event(*args) +ippython_add_event = _sim_services.ippython_add_event + +def ippython_add_event_before(*args): + return _sim_services.ippython_add_event_before(*args) +ippython_add_event_before = _sim_services.ippython_add_event_before + +def ippython_add_event_after(*args): + return _sim_services.ippython_add_event_after(*args) +ippython_add_event_after = _sim_services.ippython_add_event_after + +def ippython_add_read(*args): + return _sim_services.ippython_add_read(*args) +ippython_add_read = _sim_services.ippython_add_read + +def ippython_manual_on(*args): + return _sim_services.ippython_manual_on(*args) +ippython_manual_on = _sim_services.ippython_manual_on + +def ippython_manual_fire(*args): + return _sim_services.ippython_manual_fire(*args) +ippython_manual_fire = _sim_services.ippython_manual_fire + +def ippython_manual_off(*args): + return _sim_services.ippython_manual_off(*args) +ippython_manual_off = _sim_services.ippython_manual_off + +def ippython_manual_done(*args): + return _sim_services.ippython_manual_done(*args) +ippython_manual_done = _sim_services.ippython_manual_done + +def castAsTrick__IPPythonEvent(*args): + return _sim_services.castAsTrick__IPPythonEvent(*args) +castAsTrick__IPPythonEvent = _sim_services.castAsTrick__IPPythonEvent +class MTV(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MTV, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MTV, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MTV(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["dummy_event"] = _sim_services.MTV_dummy_event_set + __swig_getmethods__["dummy_event"] = _sim_services.MTV_dummy_event_get + if _newclass: + dummy_event = _swig_property(_sim_services.MTV_dummy_event_get, _sim_services.MTV_dummy_event_set) + __swig_setmethods__["mtv_list"] = _sim_services.MTV_mtv_list_set + __swig_getmethods__["mtv_list"] = _sim_services.MTV_mtv_list_get + if _newclass: + mtv_list = _swig_property(_sim_services.MTV_mtv_list_get, _sim_services.MTV_mtv_list_set) + __swig_setmethods__["mtv_count"] = _sim_services.MTV_mtv_count_set + __swig_getmethods__["mtv_count"] = _sim_services.MTV_mtv_count_get + if _newclass: + mtv_count = _swig_property(_sim_services.MTV_mtv_count_get, _sim_services.MTV_mtv_count_set) + __swig_setmethods__["mtv_update_ticker"] = _sim_services.MTV_mtv_update_ticker_set + __swig_getmethods__["mtv_update_ticker"] = _sim_services.MTV_mtv_update_ticker_get + if _newclass: + mtv_update_ticker = _swig_property(_sim_services.MTV_mtv_update_ticker_get, _sim_services.MTV_mtv_update_ticker_set) + + def add_event(self, *args): + return _sim_services.MTV_add_event(self, *args) + + def delete_event(self, *args): + return _sim_services.MTV_delete_event(self, *args) + + def get_event(self, *args): + return _sim_services.MTV_get_event(self, *args) + + def send_event_data(self, *args): + return _sim_services.MTV_send_event_data(self, *args) + __swig_destroy__ = _sim_services.delete_MTV + __del__ = lambda self: None +MTV_swigregister = _sim_services.MTV_swigregister +MTV_swigregister(MTV) + + +def mtv_add_event(*args): + return _sim_services.mtv_add_event(*args) +mtv_add_event = _sim_services.mtv_add_event + +def mtv_delete_event(*args): + return _sim_services.mtv_delete_event(*args) +mtv_delete_event = _sim_services.mtv_delete_event + +def mtv_get_event(*args): + return _sim_services.mtv_get_event(*args) +mtv_get_event = _sim_services.mtv_get_event + +def mtv_send_event_data(*args): + return _sim_services.mtv_send_event_data(*args) +mtv_send_event_data = _sim_services.mtv_send_event_data +class EventInstrument(InstrumentBase): + __swig_setmethods__ = {} + for _s in [InstrumentBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, EventInstrument, name, value) + __swig_getmethods__ = {} + for _s in [InstrumentBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, EventInstrument, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_EventInstrument(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def call(self, *args): + return _sim_services.EventInstrument_call(self, *args) + + def get_event(self, *args): + return _sim_services.EventInstrument_get_event(self, *args) + __swig_destroy__ = _sim_services.delete_EventInstrument + __del__ = lambda self: None +EventInstrument_swigregister = _sim_services.EventInstrument_swigregister +EventInstrument_swigregister(EventInstrument) + +class EventProcessor(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, EventProcessor, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, EventProcessor, name) + __repr__ = _swig_repr + + def set_process_event_job(self, *args): + return _sim_services.EventProcessor_set_process_event_job(self, *args) + + def add_event(self, *args): + return _sim_services.EventProcessor_add_event(self, *args) + + def remove_event(self, *args): + return _sim_services.EventProcessor_remove_event(self, *args) + + def add_pending_events(self, *args): + return _sim_services.EventProcessor_add_pending_events(self, *args) + + def process_event(self, *args): + return _sim_services.EventProcessor_process_event(self, *args) + + def preload_checkpoint(self, *args): + return _sim_services.EventProcessor_preload_checkpoint(self, *args) + + def __init__(self): + this = _sim_services.new_EventProcessor() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_EventProcessor + __del__ = lambda self: None +EventProcessor_swigregister = _sim_services.EventProcessor_swigregister +EventProcessor_swigregister(EventProcessor) + +class EventManager(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, EventManager, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, EventManager, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_EventManager(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def get_event(self, *args): + return _sim_services.EventManager_get_event(self, *args) + + def add_event(self, *args): + return _sim_services.EventManager_add_event(self, *args) + + def add_event_before(self, *args): + return _sim_services.EventManager_add_event_before(self, *args) + + def add_event_after(self, *args): + return _sim_services.EventManager_add_event_after(self, *args) + + def activate_event(self, *args): + return _sim_services.EventManager_activate_event(self, *args) + + def deactivate_event(self, *args): + return _sim_services.EventManager_deactivate_event(self, *args) + + def remove_event(self, *args): + return _sim_services.EventManager_remove_event(self, *args) + + def time_tic_changed(self, *args): + return _sim_services.EventManager_time_tic_changed(self, *args) + + def preload_checkpoint(self, *args): + return _sim_services.EventManager_preload_checkpoint(self, *args) + + def restart(self, *args): + return _sim_services.EventManager_restart(self, *args) + + def add_event_processor(self, *args): + return _sim_services.EventManager_add_event_processor(self, *args) + __swig_destroy__ = _sim_services.delete_EventManager + __del__ = lambda self: None +EventManager_swigregister = _sim_services.EventManager_swigregister +EventManager_swigregister(EventManager) + + +def event_manager_get_event(*args): + return _sim_services.event_manager_get_event(*args) +event_manager_get_event = _sim_services.event_manager_get_event + +def event_manager_add_event(*args): + return _sim_services.event_manager_add_event(*args) +event_manager_add_event = _sim_services.event_manager_add_event + +def event_manager_add_event_before(*args): + return _sim_services.event_manager_add_event_before(*args) +event_manager_add_event_before = _sim_services.event_manager_add_event_before + +def event_manager_add_event_after(*args): + return _sim_services.event_manager_add_event_after(*args) +event_manager_add_event_after = _sim_services.event_manager_add_event_after + +def event_manager_remove_event(*args): + return _sim_services.event_manager_remove_event(*args) +event_manager_remove_event = _sim_services.event_manager_remove_event +class JITEvent(Event): + __swig_setmethods__ = {} + for _s in [Event]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, JITEvent, name, value) + __swig_getmethods__ = {} + for _s in [Event]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, JITEvent, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_JITEvent(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def process(self, *args): + return _sim_services.JITEvent_process(self, *args) + + def add(self, *args): + return _sim_services.JITEvent_add(self, *args) + + def remove(self, *args): + return _sim_services.JITEvent_remove(self, *args) + + def restart(self, *args): + return _sim_services.JITEvent_restart(self, *args) + __swig_setmethods__["func_name"] = _sim_services.JITEvent_func_name_set + __swig_getmethods__["func_name"] = _sim_services.JITEvent_func_name_get + if _newclass: + func_name = _swig_property(_sim_services.JITEvent_func_name_get, _sim_services.JITEvent_func_name_set) + __swig_destroy__ = _sim_services.delete_JITEvent + __del__ = lambda self: None +JITEvent_swigregister = _sim_services.JITEvent_swigregister +JITEvent_swigregister(JITEvent) + +class JITLibInfo(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, JITLibInfo, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, JITLibInfo, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_JITLibInfo(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["library_name"] = _sim_services.JITLibInfo_library_name_set + __swig_getmethods__["library_name"] = _sim_services.JITLibInfo_library_name_get + if _newclass: + library_name = _swig_property(_sim_services.JITLibInfo_library_name_get, _sim_services.JITLibInfo_library_name_set) + __swig_setmethods__["handle"] = _sim_services.JITLibInfo_handle_set + __swig_getmethods__["handle"] = _sim_services.JITLibInfo_handle_get + if _newclass: + handle = _swig_property(_sim_services.JITLibInfo_handle_get, _sim_services.JITLibInfo_handle_set) + + def find_symbol(self, *args): + return _sim_services.JITLibInfo_find_symbol(self, *args) + __swig_destroy__ = _sim_services.delete_JITLibInfo + __del__ = lambda self: None +JITLibInfo_swigregister = _sim_services.JITLibInfo_swigregister +JITLibInfo_swigregister(JITLibInfo) + +class JITInputFile(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, JITInputFile, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, JITInputFile, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_JITInputFile(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def process_sim_args(self, *args): + return _sim_services.JITInputFile_process_sim_args(self, *args) + + def init(self, *args): + return _sim_services.JITInputFile_init(self, *args) + + def compile(self, *args): + return _sim_services.JITInputFile_compile(self, *args) + + def run(self, *args): + return _sim_services.JITInputFile_run(self, *args) + + def compile_and_run(self, *args): + return _sim_services.JITInputFile_compile_and_run(self, *args) + + def add_library(self, *args): + return _sim_services.JITInputFile_add_library(self, *args) + + def find_symbol(self, *args): + return _sim_services.JITInputFile_find_symbol(self, *args) + __swig_destroy__ = _sim_services.delete_JITInputFile + __del__ = lambda self: None +JITInputFile_swigregister = _sim_services.JITInputFile_swigregister +JITInputFile_swigregister(JITInputFile) + + +def jit_compile(*args): + return _sim_services.jit_compile(*args) +jit_compile = _sim_services.jit_compile + +def jit_run(*args): + return _sim_services.jit_run(*args) +jit_run = _sim_services.jit_run + +def jit_compile_and_run(*args): + return _sim_services.jit_compile_and_run(*args) +jit_compile_and_run = _sim_services.jit_compile_and_run + +def jit_add_library(*args): + return _sim_services.jit_add_library(*args) +jit_add_library = _sim_services.jit_add_library + +def jit_find_symbol(*args): + return _sim_services.jit_find_symbol(*args) +jit_find_symbol = _sim_services.jit_find_symbol + +def jit_add_read(*args): + return _sim_services.jit_add_read(*args) +jit_add_read = _sim_services.jit_add_read + +def jit_add_event(*args): + return _sim_services.jit_add_event(*args) +jit_add_event = _sim_services.jit_add_event + +def jit_add_event_before(*args): + return _sim_services.jit_add_event_before(*args) +jit_add_event_before = _sim_services.jit_add_event_before + +def jit_add_event_after(*args): + return _sim_services.jit_add_event_after(*args) +jit_add_event_after = _sim_services.jit_add_event_after +TRICK_ERROR_ALL = _sim_services.TRICK_ERROR_ALL +TRICK_ERROR_TRIVIAL = _sim_services.TRICK_ERROR_TRIVIAL +TRICK_ERROR_ADVISORY = _sim_services.TRICK_ERROR_ADVISORY +TRICK_ERROR_CAUTION = _sim_services.TRICK_ERROR_CAUTION +TRICK_ERROR_WARNING = _sim_services.TRICK_ERROR_WARNING +TRICK_ERROR_ALERT = _sim_services.TRICK_ERROR_ALERT +TRICK_ERROR_FATAL = _sim_services.TRICK_ERROR_FATAL +TRICK_ERROR_ABORT = _sim_services.TRICK_ERROR_ABORT +TRICK_ERROR_SILENT = _sim_services.TRICK_ERROR_SILENT +class TrickErrorHndlr(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TrickErrorHndlr, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TrickErrorHndlr, name) + __repr__ = _swig_repr + __swig_setmethods__["error_func"] = _sim_services.TrickErrorHndlr_error_func_set + __swig_getmethods__["error_func"] = _sim_services.TrickErrorHndlr_error_func_get + if _newclass: + error_func = _swig_property(_sim_services.TrickErrorHndlr_error_func_get, _sim_services.TrickErrorHndlr_error_func_set) + __swig_setmethods__["data_ptr"] = _sim_services.TrickErrorHndlr_data_ptr_set + __swig_getmethods__["data_ptr"] = _sim_services.TrickErrorHndlr_data_ptr_get + if _newclass: + data_ptr = _swig_property(_sim_services.TrickErrorHndlr_data_ptr_get, _sim_services.TrickErrorHndlr_data_ptr_set) + __swig_setmethods__["report_level"] = _sim_services.TrickErrorHndlr_report_level_set + __swig_getmethods__["report_level"] = _sim_services.TrickErrorHndlr_report_level_get + if _newclass: + report_level = _swig_property(_sim_services.TrickErrorHndlr_report_level_get, _sim_services.TrickErrorHndlr_report_level_set) + __swig_setmethods__["use_send_hs"] = _sim_services.TrickErrorHndlr_use_send_hs_set + __swig_getmethods__["use_send_hs"] = _sim_services.TrickErrorHndlr_use_send_hs_get + if _newclass: + use_send_hs = _swig_property(_sim_services.TrickErrorHndlr_use_send_hs_get, _sim_services.TrickErrorHndlr_use_send_hs_set) + __swig_setmethods__["report_stream"] = _sim_services.TrickErrorHndlr_report_stream_set + __swig_getmethods__["report_stream"] = _sim_services.TrickErrorHndlr_report_stream_get + if _newclass: + report_stream = _swig_property(_sim_services.TrickErrorHndlr_report_stream_get, _sim_services.TrickErrorHndlr_report_stream_set) + + def __init__(self): + this = _sim_services.new_TrickErrorHndlr() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TrickErrorHndlr + __del__ = lambda self: None +TrickErrorHndlr_swigregister = _sim_services.TrickErrorHndlr_swigregister +TrickErrorHndlr_swigregister(TrickErrorHndlr) + + +def trick_error_func_default(*args): + return _sim_services.trick_error_func_default(*args) +trick_error_func_default = _sim_services.trick_error_func_default + +def trick_error_init(*args): + return _sim_services.trick_error_init(*args) +trick_error_init = _sim_services.trick_error_init + +def trick_error_shutdown(*args): + return _sim_services.trick_error_shutdown(*args) +trick_error_shutdown = _sim_services.trick_error_shutdown + +def trick_error_set_func(*args): + return _sim_services.trick_error_set_func(*args) +trick_error_set_func = _sim_services.trick_error_set_func + +def trick_error_set_data(*args): + return _sim_services.trick_error_set_data(*args) +trick_error_set_data = _sim_services.trick_error_set_data + +def trick_error_set_report_level(*args): + return _sim_services.trick_error_set_report_level(*args) +trick_error_set_report_level = _sim_services.trick_error_set_report_level + +def trick_error_set_stream(*args): + return _sim_services.trick_error_set_stream(*args) +trick_error_set_stream = _sim_services.trick_error_set_stream + +def trick_error_set_all_streams(*args): + return _sim_services.trick_error_set_all_streams(*args) +trick_error_set_all_streams = _sim_services.trick_error_set_all_streams + +def trick_error_copy_streams(*args): + return _sim_services.trick_error_copy_streams(*args) +trick_error_copy_streams = _sim_services.trick_error_copy_streams + +def trick_error_set_send_hs_flag(*args): + return _sim_services.trick_error_set_send_hs_flag(*args) +trick_error_set_send_hs_flag = _sim_services.trick_error_set_send_hs_flag + +def trick_error_set_all_send_hs_flags(*args): + return _sim_services.trick_error_set_all_send_hs_flags(*args) +trick_error_set_all_send_hs_flags = _sim_services.trick_error_set_all_send_hs_flags + +def trick_error_copy_send_hs_flags(*args): + return _sim_services.trick_error_copy_send_hs_flags(*args) +trick_error_copy_send_hs_flags = _sim_services.trick_error_copy_send_hs_flags + +def trick_error_get_func(*args): + return _sim_services.trick_error_get_func(*args) +trick_error_get_func = _sim_services.trick_error_get_func + +def trick_error_get_data(*args): + return _sim_services.trick_error_get_data(*args) +trick_error_get_data = _sim_services.trick_error_get_data + +def trick_error_get_report_level(*args): + return _sim_services.trick_error_get_report_level(*args) +trick_error_get_report_level = _sim_services.trick_error_get_report_level + +def trick_error_get_stream(*args): + return _sim_services.trick_error_get_stream(*args) +trick_error_get_stream = _sim_services.trick_error_get_stream + +def trick_error_get_curr_stream(*args): + return _sim_services.trick_error_get_curr_stream(*args) +trick_error_get_curr_stream = _sim_services.trick_error_get_curr_stream + +def trick_error_get_send_hs_flag(*args): + return _sim_services.trick_error_get_send_hs_flag(*args) +trick_error_get_send_hs_flag = _sim_services.trick_error_get_send_hs_flag + +def trick_error_get_curr_send_hs_flag(*args): + return _sim_services.trick_error_get_curr_send_hs_flag(*args) +trick_error_get_curr_send_hs_flag = _sim_services.trick_error_get_curr_send_hs_flag + +def trick_error_report(*args): + return _sim_services.trick_error_report(*args) +trick_error_report = _sim_services.trick_error_report +TC_NOSIGNAL = _sim_services.TC_NOSIGNAL +TC_SUCCESS = _sim_services.TC_SUCCESS +TC_COULD_NOT_OPEN_SOCKET = _sim_services.TC_COULD_NOT_OPEN_SOCKET +TC_COULD_NOT_BIND_SOCKET = _sim_services.TC_COULD_NOT_BIND_SOCKET +TC_COULD_NOT_LISTEN_SOCKET = _sim_services.TC_COULD_NOT_LISTEN_SOCKET +TC_COULD_NOT_ACCEPT = _sim_services.TC_COULD_NOT_ACCEPT +TC_DRIVER_NOT_INSTALLED = _sim_services.TC_DRIVER_NOT_INSTALLED +TC_DRIVER_ALREADY_INSTALLED = _sim_services.TC_DRIVER_ALREADY_INSTALLED +TC_DRIVER_IS_NULL = _sim_services.TC_DRIVER_IS_NULL +TC_HOST_NOT_FOUND = _sim_services.TC_HOST_NOT_FOUND +TC_COULD_NOT_CONNECT = _sim_services.TC_COULD_NOT_CONNECT +TC_RESOURCE_EXCEEDED = _sim_services.TC_RESOURCE_EXCEEDED +TC_DRIVER_NOT_FOUND = _sim_services.TC_DRIVER_NOT_FOUND +TC_DRIVER_ALREADY_DISCONNECTED = _sim_services.TC_DRIVER_ALREADY_DISCONNECTED +TC_CONN_DISABLED = _sim_services.TC_CONN_DISABLED +TC_COULD_NOT_SET_TTL = _sim_services.TC_COULD_NOT_SET_TTL +TC_COULD_NOT_ADD_MEMBERSHIP = _sim_services.TC_COULD_NOT_ADD_MEMBERSHIP +TC_EWOULDBLOCK = _sim_services.TC_EWOULDBLOCK +TC_READWRITE_TIMEOUT = _sim_services.TC_READWRITE_TIMEOUT +TC_BROKEN_PIPE = _sim_services.TC_BROKEN_PIPE +MAX_BLOCKIO_TIMEOUT_LIMIT = _sim_services.MAX_BLOCKIO_TIMEOUT_LIMIT +TRICKCOMM_SOCKET_PROTO = _sim_services.TRICKCOMM_SOCKET_PROTO +TRICKCOMM_INVALID_SOCKET = _sim_services.TRICKCOMM_INVALID_SOCKET +TC_TAG_LENGTH = _sim_services.TC_TAG_LENGTH +TC_BYTE_ORDER_NDX = _sim_services.TC_BYTE_ORDER_NDX +TC_LONG_SIZE_NDX = _sim_services.TC_LONG_SIZE_NDX +TC_BYTE_INFO_LENGTH = _sim_services.TC_BYTE_INFO_LENGTH +TC_MULT_PORT = _sim_services.TC_MULT_PORT +TC_MULT_GROUP = _sim_services.TC_MULT_GROUP +TC_COMM_FALSE = _sim_services.TC_COMM_FALSE +TC_COMM_TRUE = _sim_services.TC_COMM_TRUE +TC_COMM_NO = _sim_services.TC_COMM_NO +TC_COMM_YES = _sim_services.TC_COMM_YES +TC_COMM_DISABLED = _sim_services.TC_COMM_DISABLED +TC_COMM_ENABLED = _sim_services.TC_COMM_ENABLED +TC_COMM_BLOCKIO = _sim_services.TC_COMM_BLOCKIO +TC_COMM_NOBLOCKIO = _sim_services.TC_COMM_NOBLOCKIO +TC_COMM_TIMED_BLOCKIO = _sim_services.TC_COMM_TIMED_BLOCKIO +TC_COMM_ALL_OR_NOTHING = _sim_services.TC_COMM_ALL_OR_NOTHING +class TCDevice(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TCDevice, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TCDevice, name) + __repr__ = _swig_repr + __swig_setmethods__["socket"] = _sim_services.TCDevice_socket_set + __swig_getmethods__["socket"] = _sim_services.TCDevice_socket_get + if _newclass: + socket = _swig_property(_sim_services.TCDevice_socket_get, _sim_services.TCDevice_socket_set) + __swig_setmethods__["socket_type"] = _sim_services.TCDevice_socket_type_set + __swig_getmethods__["socket_type"] = _sim_services.TCDevice_socket_type_get + if _newclass: + socket_type = _swig_property(_sim_services.TCDevice_socket_type_get, _sim_services.TCDevice_socket_type_set) + __swig_setmethods__["disabled"] = _sim_services.TCDevice_disabled_set + __swig_getmethods__["disabled"] = _sim_services.TCDevice_disabled_get + if _newclass: + disabled = _swig_property(_sim_services.TCDevice_disabled_get, _sim_services.TCDevice_disabled_set) + __swig_setmethods__["disable_handshaking"] = _sim_services.TCDevice_disable_handshaking_set + __swig_getmethods__["disable_handshaking"] = _sim_services.TCDevice_disable_handshaking_get + if _newclass: + disable_handshaking = _swig_property(_sim_services.TCDevice_disable_handshaking_get, _sim_services.TCDevice_disable_handshaking_set) + __swig_setmethods__["blockio_limit"] = _sim_services.TCDevice_blockio_limit_set + __swig_getmethods__["blockio_limit"] = _sim_services.TCDevice_blockio_limit_get + if _newclass: + blockio_limit = _swig_property(_sim_services.TCDevice_blockio_limit_get, _sim_services.TCDevice_blockio_limit_set) + __swig_setmethods__["blockio_type"] = _sim_services.TCDevice_blockio_type_set + __swig_getmethods__["blockio_type"] = _sim_services.TCDevice_blockio_type_get + if _newclass: + blockio_type = _swig_property(_sim_services.TCDevice_blockio_type_get, _sim_services.TCDevice_blockio_type_set) + __swig_setmethods__["byte_info"] = _sim_services.TCDevice_byte_info_set + __swig_getmethods__["byte_info"] = _sim_services.TCDevice_byte_info_get + if _newclass: + byte_info = _swig_property(_sim_services.TCDevice_byte_info_get, _sim_services.TCDevice_byte_info_set) + __swig_setmethods__["client_id"] = _sim_services.TCDevice_client_id_set + __swig_getmethods__["client_id"] = _sim_services.TCDevice_client_id_get + if _newclass: + client_id = _swig_property(_sim_services.TCDevice_client_id_get, _sim_services.TCDevice_client_id_set) + __swig_setmethods__["client_tag"] = _sim_services.TCDevice_client_tag_set + __swig_getmethods__["client_tag"] = _sim_services.TCDevice_client_tag_get + if _newclass: + client_tag = _swig_property(_sim_services.TCDevice_client_tag_get, _sim_services.TCDevice_client_tag_set) + __swig_setmethods__["client_addr"] = _sim_services.TCDevice_client_addr_set + __swig_getmethods__["client_addr"] = _sim_services.TCDevice_client_addr_get + if _newclass: + client_addr = _swig_property(_sim_services.TCDevice_client_addr_get, _sim_services.TCDevice_client_addr_set) + __swig_setmethods__["error_handler"] = _sim_services.TCDevice_error_handler_set + __swig_getmethods__["error_handler"] = _sim_services.TCDevice_error_handler_get + if _newclass: + error_handler = _swig_property(_sim_services.TCDevice_error_handler_get, _sim_services.TCDevice_error_handler_set) + __swig_setmethods__["hostname"] = _sim_services.TCDevice_hostname_set + __swig_getmethods__["hostname"] = _sim_services.TCDevice_hostname_get + if _newclass: + hostname = _swig_property(_sim_services.TCDevice_hostname_get, _sim_services.TCDevice_hostname_set) + __swig_setmethods__["port"] = _sim_services.TCDevice_port_set + __swig_getmethods__["port"] = _sim_services.TCDevice_port_get + if _newclass: + port = _swig_property(_sim_services.TCDevice_port_get, _sim_services.TCDevice_port_set) + __swig_setmethods__["remoteServAddr"] = _sim_services.TCDevice_remoteServAddr_set + __swig_getmethods__["remoteServAddr"] = _sim_services.TCDevice_remoteServAddr_get + if _newclass: + remoteServAddr = _swig_property(_sim_services.TCDevice_remoteServAddr_get, _sim_services.TCDevice_remoteServAddr_set) + __swig_setmethods__["mcast_group"] = _sim_services.TCDevice_mcast_group_set + __swig_getmethods__["mcast_group"] = _sim_services.TCDevice_mcast_group_get + if _newclass: + mcast_group = _swig_property(_sim_services.TCDevice_mcast_group_get, _sim_services.TCDevice_mcast_group_set) + __swig_setmethods__["ttl"] = _sim_services.TCDevice_ttl_set + __swig_getmethods__["ttl"] = _sim_services.TCDevice_ttl_get + if _newclass: + ttl = _swig_property(_sim_services.TCDevice_ttl_get, _sim_services.TCDevice_ttl_set) + __swig_setmethods__["cliAddr"] = _sim_services.TCDevice_cliAddr_set + __swig_getmethods__["cliAddr"] = _sim_services.TCDevice_cliAddr_get + if _newclass: + cliAddr = _swig_property(_sim_services.TCDevice_cliAddr_get, _sim_services.TCDevice_cliAddr_set) + + def __init__(self): + this = _sim_services.new_TCDevice() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TCDevice + __del__ = lambda self: None +TCDevice_swigregister = _sim_services.TCDevice_swigregister +TCDevice_swigregister(TCDevice) + +class SEND_ME(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SEND_ME, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SEND_ME, name) + __repr__ = _swig_repr + __swig_setmethods__["addr"] = _sim_services.SEND_ME_addr_set + __swig_getmethods__["addr"] = _sim_services.SEND_ME_addr_get + if _newclass: + addr = _swig_property(_sim_services.SEND_ME_addr_get, _sim_services.SEND_ME_addr_set) + __swig_setmethods__["port"] = _sim_services.SEND_ME_port_set + __swig_getmethods__["port"] = _sim_services.SEND_ME_port_get + if _newclass: + port = _swig_property(_sim_services.SEND_ME_port_get, _sim_services.SEND_ME_port_set) + __swig_setmethods__["pid"] = _sim_services.SEND_ME_pid_set + __swig_getmethods__["pid"] = _sim_services.SEND_ME_pid_get + if _newclass: + pid = _swig_property(_sim_services.SEND_ME_pid_get, _sim_services.SEND_ME_pid_set) + __swig_setmethods__["conn_initiated"] = _sim_services.SEND_ME_conn_initiated_set + __swig_getmethods__["conn_initiated"] = _sim_services.SEND_ME_conn_initiated_get + if _newclass: + conn_initiated = _swig_property(_sim_services.SEND_ME_conn_initiated_get, _sim_services.SEND_ME_conn_initiated_set) + __swig_setmethods__["disabled"] = _sim_services.SEND_ME_disabled_set + __swig_getmethods__["disabled"] = _sim_services.SEND_ME_disabled_get + if _newclass: + disabled = _swig_property(_sim_services.SEND_ME_disabled_get, _sim_services.SEND_ME_disabled_set) + __swig_setmethods__["my_tag"] = _sim_services.SEND_ME_my_tag_set + __swig_getmethods__["my_tag"] = _sim_services.SEND_ME_my_tag_get + if _newclass: + my_tag = _swig_property(_sim_services.SEND_ME_my_tag_get, _sim_services.SEND_ME_my_tag_set) + __swig_setmethods__["other_tag"] = _sim_services.SEND_ME_other_tag_set + __swig_getmethods__["other_tag"] = _sim_services.SEND_ME_other_tag_get + if _newclass: + other_tag = _swig_property(_sim_services.SEND_ME_other_tag_get, _sim_services.SEND_ME_other_tag_set) + + def __init__(self): + this = _sim_services.new_SEND_ME() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_SEND_ME + __del__ = lambda self: None +SEND_ME_swigregister = _sim_services.SEND_ME_swigregister +SEND_ME_swigregister(SEND_ME) + +class BC_INFO(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, BC_INFO, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, BC_INFO, name) + __repr__ = _swig_repr + __swig_setmethods__["send_me"] = _sim_services.BC_INFO_send_me_set + __swig_getmethods__["send_me"] = _sim_services.BC_INFO_send_me_get + if _newclass: + send_me = _swig_property(_sim_services.BC_INFO_send_me_get, _sim_services.BC_INFO_send_me_set) + __swig_setmethods__["device"] = _sim_services.BC_INFO_device_set + __swig_getmethods__["device"] = _sim_services.BC_INFO_device_get + if _newclass: + device = _swig_property(_sim_services.BC_INFO_device_get, _sim_services.BC_INFO_device_set) + __swig_setmethods__["addr"] = _sim_services.BC_INFO_addr_set + __swig_getmethods__["addr"] = _sim_services.BC_INFO_addr_get + if _newclass: + addr = _swig_property(_sim_services.BC_INFO_addr_get, _sim_services.BC_INFO_addr_set) + __swig_setmethods__["fd"] = _sim_services.BC_INFO_fd_set + __swig_getmethods__["fd"] = _sim_services.BC_INFO_fd_get + if _newclass: + fd = _swig_property(_sim_services.BC_INFO_fd_get, _sim_services.BC_INFO_fd_set) + + def __init__(self): + this = _sim_services.new_BC_INFO() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_BC_INFO + __del__ = lambda self: None +BC_INFO_swigregister = _sim_services.BC_INFO_swigregister +BC_INFO_swigregister(BC_INFO) + +class JSONVariableServer(ThreadBase): + __swig_setmethods__ = {} + for _s in [ThreadBase]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, JSONVariableServer, name, value) + __swig_getmethods__ = {} + for _s in [ThreadBase]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, JSONVariableServer, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_JSONVariableServer(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_JSONVariableServer + __del__ = lambda self: None + __swig_setmethods__["enabled"] = _sim_services.JSONVariableServer_enabled_set + __swig_getmethods__["enabled"] = _sim_services.JSONVariableServer_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.JSONVariableServer_enabled_get, _sim_services.JSONVariableServer_enabled_set) + + def get_hostname(self, *args): + return _sim_services.JSONVariableServer_get_hostname(self, *args) + + def get_port(self, *args): + return _sim_services.JSONVariableServer_get_port(self, *args) + + def set_port(self, *args): + return _sim_services.JSONVariableServer_set_port(self, *args) + + def set_source_address(self, *args): + return _sim_services.JSONVariableServer_set_source_address(self, *args) + + def get_source_address(self, *args): + return _sim_services.JSONVariableServer_get_source_address(self, *args) + + def init_listen_device(self, *args): + return _sim_services.JSONVariableServer_init_listen_device(self, *args) + + def init(self, *args): + return _sim_services.JSONVariableServer_init(self, *args) + + def check_and_move_listen_device(self, *args): + return _sim_services.JSONVariableServer_check_and_move_listen_device(self, *args) + + def thread_body(self, *args): + return _sim_services.JSONVariableServer_thread_body(self, *args) + + def restart(self, *args): + return _sim_services.JSONVariableServer_restart(self, *args) + + def dump(self, *args): + return _sim_services.JSONVariableServer_dump(self, *args) +JSONVariableServer_swigregister = _sim_services.JSONVariableServer_swigregister +JSONVariableServer_swigregister(JSONVariableServer) + +class IntegrationManager(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegrationManager, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, IntegrationManager, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_IntegrationManager(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def is_empty(self, *args): + return _sim_services.IntegrationManager_is_empty(self, *args) + + def build_sim_object_info(self, *args): + return _sim_services.IntegrationManager_build_sim_object_info(self, *args) + + def clear_sim_object_info(self, *args): + return _sim_services.IntegrationManager_clear_sim_object_info(self, *args) + + def clear_integrated_by(self, *args): + return _sim_services.IntegrationManager_clear_integrated_by(self, *args) + + def get_integrated_by(self, *args): + return _sim_services.IntegrationManager_get_integrated_by(self, *args) + + def set_integrated_by(self, *args): + return _sim_services.IntegrationManager_set_integrated_by(self, *args) + + def add_jobs_to_queue(self, *args): + return _sim_services.IntegrationManager_add_jobs_to_queue(self, *args) + + def find_sim_object(self, *args): + return _sim_services.IntegrationManager_find_sim_object(self, *args) + __swig_destroy__ = _sim_services.delete_IntegrationManager + __del__ = lambda self: None +IntegrationManager_swigregister = _sim_services.IntegrationManager_swigregister +IntegrationManager_swigregister(IntegrationManager) + +Euler = _sim_services.Euler +Euler_Cromer = _sim_services.Euler_Cromer +Nystrom_Lear_2 = _sim_services.Nystrom_Lear_2 +Runge_Kutta_2 = _sim_services.Runge_Kutta_2 +Modified_Midpoint_4 = _sim_services.Modified_Midpoint_4 +Runge_Kutta_4 = _sim_services.Runge_Kutta_4 +Runge_Kutta_Gill_4 = _sim_services.Runge_Kutta_Gill_4 +Runge_Kutta_Fehlberg_45 = _sim_services.Runge_Kutta_Fehlberg_45 +Runge_Kutta_Fehlberg_78 = _sim_services.Runge_Kutta_Fehlberg_78 +ABM_Method = _sim_services.ABM_Method +User_Defined = _sim_services.User_Defined +class Integrator(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Integrator, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_Integrator + __del__ = lambda self: None + + def initialize(self, *args): + return _sim_services.Integrator_initialize(self, *args) + + def integrate(self, *args): + return _sim_services.Integrator_integrate(self, *args) + + def integrate_1st_order_ode(self, *args): + return _sim_services.Integrator_integrate_1st_order_ode(self, *args) + + def integrate_2nd_order_ode(self, *args): + return _sim_services.Integrator_integrate_2nd_order_ode(self, *args) + + def state_in(self, *args): + return _sim_services.Integrator_state_in(self, *args) + + def deriv_in(self, *args): + return _sim_services.Integrator_deriv_in(self, *args) + + def state_out(self, *args): + return _sim_services.Integrator_state_out(self, *args) + + def deriv2_in(self, *args): + return _sim_services.Integrator_deriv2_in(self, *args) + __swig_setmethods__["num_state"] = _sim_services.Integrator_num_state_set + __swig_getmethods__["num_state"] = _sim_services.Integrator_num_state_get + if _newclass: + num_state = _swig_property(_sim_services.Integrator_num_state_get, _sim_services.Integrator_num_state_set) + __swig_setmethods__["intermediate_step"] = _sim_services.Integrator_intermediate_step_set + __swig_getmethods__["intermediate_step"] = _sim_services.Integrator_intermediate_step_get + if _newclass: + intermediate_step = _swig_property(_sim_services.Integrator_intermediate_step_get, _sim_services.Integrator_intermediate_step_set) + __swig_setmethods__["first_step_deriv"] = _sim_services.Integrator_first_step_deriv_set + __swig_getmethods__["first_step_deriv"] = _sim_services.Integrator_first_step_deriv_get + if _newclass: + first_step_deriv = _swig_property(_sim_services.Integrator_first_step_deriv_get, _sim_services.Integrator_first_step_deriv_set) + __swig_setmethods__["last_step_deriv"] = _sim_services.Integrator_last_step_deriv_set + __swig_getmethods__["last_step_deriv"] = _sim_services.Integrator_last_step_deriv_get + if _newclass: + last_step_deriv = _swig_property(_sim_services.Integrator_last_step_deriv_get, _sim_services.Integrator_last_step_deriv_set) + __swig_setmethods__["is_2nd_order_ODE_technique"] = _sim_services.Integrator_is_2nd_order_ODE_technique_set + __swig_getmethods__["is_2nd_order_ODE_technique"] = _sim_services.Integrator_is_2nd_order_ODE_technique_get + if _newclass: + is_2nd_order_ODE_technique = _swig_property(_sim_services.Integrator_is_2nd_order_ODE_technique_get, _sim_services.Integrator_is_2nd_order_ODE_technique_set) + __swig_setmethods__["use_deriv2"] = _sim_services.Integrator_use_deriv2_set + __swig_getmethods__["use_deriv2"] = _sim_services.Integrator_use_deriv2_get + if _newclass: + use_deriv2 = _swig_property(_sim_services.Integrator_use_deriv2_get, _sim_services.Integrator_use_deriv2_set) + __swig_setmethods__["dt"] = _sim_services.Integrator_dt_set + __swig_getmethods__["dt"] = _sim_services.Integrator_dt_get + if _newclass: + dt = _swig_property(_sim_services.Integrator_dt_get, _sim_services.Integrator_dt_set) + __swig_setmethods__["state"] = _sim_services.Integrator_state_set + __swig_getmethods__["state"] = _sim_services.Integrator_state_get + if _newclass: + state = _swig_property(_sim_services.Integrator_state_get, _sim_services.Integrator_state_set) + __swig_setmethods__["deriv"] = _sim_services.Integrator_deriv_set + __swig_getmethods__["deriv"] = _sim_services.Integrator_deriv_get + if _newclass: + deriv = _swig_property(_sim_services.Integrator_deriv_get, _sim_services.Integrator_deriv_set) + __swig_setmethods__["deriv2"] = _sim_services.Integrator_deriv2_set + __swig_getmethods__["deriv2"] = _sim_services.Integrator_deriv2_get + if _newclass: + deriv2 = _swig_property(_sim_services.Integrator_deriv2_get, _sim_services.Integrator_deriv2_set) + __swig_setmethods__["state_ws"] = _sim_services.Integrator_state_ws_set + __swig_getmethods__["state_ws"] = _sim_services.Integrator_state_ws_get + if _newclass: + state_ws = _swig_property(_sim_services.Integrator_state_ws_get, _sim_services.Integrator_state_ws_set) + __swig_setmethods__["time"] = _sim_services.Integrator_time_set + __swig_getmethods__["time"] = _sim_services.Integrator_time_get + if _newclass: + time = _swig_property(_sim_services.Integrator_time_get, _sim_services.Integrator_time_set) + __swig_setmethods__["time_0"] = _sim_services.Integrator_time_0_set + __swig_getmethods__["time_0"] = _sim_services.Integrator_time_0_get + if _newclass: + time_0 = _swig_property(_sim_services.Integrator_time_0_get, _sim_services.Integrator_time_0_set) + __swig_setmethods__["verbosity"] = _sim_services.Integrator_verbosity_set + __swig_getmethods__["verbosity"] = _sim_services.Integrator_verbosity_get + if _newclass: + verbosity = _swig_property(_sim_services.Integrator_verbosity_get, _sim_services.Integrator_verbosity_set) + + def get_first_step_deriv(self, *args): + return _sim_services.Integrator_get_first_step_deriv(self, *args) + + def set_first_step_deriv(self, *args): + return _sim_services.Integrator_set_first_step_deriv(self, *args) + + def get_last_step_deriv(self, *args): + return _sim_services.Integrator_get_last_step_deriv(self, *args) + + def set_last_step_deriv(self, *args): + return _sim_services.Integrator_set_last_step_deriv(self, *args) + + def set_verbosity(self, *args): + return _sim_services.Integrator_set_verbosity(self, *args) + + def reset(self, *args): + return _sim_services.Integrator_reset(self, *args) + + def get_Integrator_type(self, *args): + return _sim_services.Integrator_get_Integrator_type(self, *args) +Integrator_swigregister = _sim_services.Integrator_swigregister +Integrator_swigregister(Integrator) + + +def getIntegrator(*args): + return _sim_services.getIntegrator(*args) +getIntegrator = _sim_services.getIntegrator +class IntegLoopScheduler(Scheduler): + __swig_setmethods__ = {} + for _s in [Scheduler]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegLoopScheduler, name, value) + __swig_getmethods__ = {} + for _s in [Scheduler]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, IntegLoopScheduler, name) + __repr__ = _swig_repr + __swig_setmethods__["verbosity"] = _sim_services.IntegLoopScheduler_verbosity_set + __swig_getmethods__["verbosity"] = _sim_services.IntegLoopScheduler_verbosity_get + if _newclass: + verbosity = _swig_property(_sim_services.IntegLoopScheduler_verbosity_get, _sim_services.IntegLoopScheduler_verbosity_set) + __swig_setmethods__["last_step_deriv"] = _sim_services.IntegLoopScheduler_last_step_deriv_set + __swig_getmethods__["last_step_deriv"] = _sim_services.IntegLoopScheduler_last_step_deriv_get + if _newclass: + last_step_deriv = _swig_property(_sim_services.IntegLoopScheduler_last_step_deriv_get, _sim_services.IntegLoopScheduler_last_step_deriv_set) + __swig_setmethods__["first_step_deriv"] = _sim_services.IntegLoopScheduler_first_step_deriv_set + __swig_getmethods__["first_step_deriv"] = _sim_services.IntegLoopScheduler_first_step_deriv_get + if _newclass: + first_step_deriv = _swig_property(_sim_services.IntegLoopScheduler_first_step_deriv_get, _sim_services.IntegLoopScheduler_first_step_deriv_set) + __swig_setmethods__["integ_ptr"] = _sim_services.IntegLoopScheduler_integ_ptr_set + __swig_getmethods__["integ_ptr"] = _sim_services.IntegLoopScheduler_integ_ptr_get + if _newclass: + integ_ptr = _swig_property(_sim_services.IntegLoopScheduler_integ_ptr_get, _sim_services.IntegLoopScheduler_integ_ptr_set) + __swig_setmethods__["sim_objects"] = _sim_services.IntegLoopScheduler_sim_objects_set + __swig_getmethods__["sim_objects"] = _sim_services.IntegLoopScheduler_sim_objects_get + if _newclass: + sim_objects = _swig_property(_sim_services.IntegLoopScheduler_sim_objects_get, _sim_services.IntegLoopScheduler_sim_objects_set) + + def __init__(self, *args): + this = _sim_services.new_IntegLoopScheduler(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_IntegLoopScheduler + __del__ = lambda self: None + + def add_integ_jobs_from_sim_object(self, *args): + return _sim_services.IntegLoopScheduler_add_integ_jobs_from_sim_object(self, *args) + + def call_deriv_jobs(self, *args): + return _sim_services.IntegLoopScheduler_call_deriv_jobs(self, *args) + + def integrate(self, *args): + return _sim_services.IntegLoopScheduler_integrate(self, *args) + + def add_sim_object(self, *args): + return _sim_services.IntegLoopScheduler_add_sim_object(self, *args) + + def remove_sim_object(self, *args): + return _sim_services.IntegLoopScheduler_remove_sim_object(self, *args) + + def rebuild_jobs(self, *args): + return _sim_services.IntegLoopScheduler_rebuild_jobs(self, *args) + + def restart_checkpoint(self, *args): + return _sim_services.IntegLoopScheduler_restart_checkpoint(self, *args) + + def get_first_step_deriv_from_integrator(self, *args): + return _sim_services.IntegLoopScheduler_get_first_step_deriv_from_integrator(self, *args) + + def set_first_step_deriv(self, *args): + return _sim_services.IntegLoopScheduler_set_first_step_deriv(self, *args) + + def get_last_step_deriv(self, *args): + return _sim_services.IntegLoopScheduler_get_last_step_deriv(self, *args) + + def set_last_step_deriv(self, *args): + return _sim_services.IntegLoopScheduler_set_last_step_deriv(self, *args) + + def set_verbosity(self, *args): + return _sim_services.IntegLoopScheduler_set_verbosity(self, *args) + + def getIntegrator(self, *args): + return _sim_services.IntegLoopScheduler_getIntegrator(self, *args) + + def get_integ_cycle(self, *args): + return _sim_services.IntegLoopScheduler_get_integ_cycle(self, *args) + + def set_integ_cycle(self, *args): + return _sim_services.IntegLoopScheduler_set_integ_cycle(self, *args) + + def write_s_job_execution(self, *args): + return _sim_services.IntegLoopScheduler_write_s_job_execution(self, *args) + + def instrument_job_before(self, *args): + return _sim_services.IntegLoopScheduler_instrument_job_before(self, *args) + + def instrument_job_after(self, *args): + return _sim_services.IntegLoopScheduler_instrument_job_after(self, *args) + + def instrument_job_remove(self, *args): + return _sim_services.IntegLoopScheduler_instrument_job_remove(self, *args) +IntegLoopScheduler_swigregister = _sim_services.IntegLoopScheduler_swigregister +IntegLoopScheduler_swigregister(IntegLoopScheduler) + +class IntegLoopSimObject(SimObject): + __swig_setmethods__ = {} + for _s in [SimObject]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegLoopSimObject, name, value) + __swig_getmethods__ = {} + for _s in [SimObject]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, IntegLoopSimObject, name) + __repr__ = _swig_repr + __swig_setmethods__["integ_sched"] = _sim_services.IntegLoopSimObject_integ_sched_set + __swig_getmethods__["integ_sched"] = _sim_services.IntegLoopSimObject_integ_sched_get + if _newclass: + integ_sched = _swig_property(_sim_services.IntegLoopSimObject_integ_sched_get, _sim_services.IntegLoopSimObject_integ_sched_set) + + def __init__(self, *args, **kwargs): + import _sim_services + this = _sim_services.new_IntegLoopSimObject(*args) + try: self.this.append(this) + except: self.this = this + if 'TMMName' in kwargs: + this.own(0) + self.this.own(0) + isThisInMM = _sim_services.get_alloc_info_at(this) + if isThisInMM: + _sim_services.set_alloc_name_at(this, kwargs['TMMName']) + else: + _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "IntegLoopSimObject", 0, kwargs['TMMName'], 0, None) + alloc_info = _sim_services.get_alloc_info_at(this) + alloc_info.stcl = _sim_services.TRICK_LOCAL + alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW + + + + def add_jobs(self, *args): + return _sim_services.IntegLoopSimObject_add_jobs(self, *args) + + def call_function(self, *args): + return _sim_services.IntegLoopSimObject_call_function(self, *args) + + def call_function_double(self, *args): + return _sim_services.IntegLoopSimObject_call_function_double(self, *args) + + def getIntegrator(self, *args): + return _sim_services.IntegLoopSimObject_getIntegrator(self, *args) + + def set_integ_cycle(self, *args): + return _sim_services.IntegLoopSimObject_set_integ_cycle(self, *args) + + def __getitem__(self, *args): + return _sim_services.IntegLoopSimObject___getitem__(self, *args) + + def __len__(self, *args): + return _sim_services.IntegLoopSimObject___len__(self, *args) + __swig_destroy__ = _sim_services.delete_IntegLoopSimObject + __del__ = lambda self: None +IntegLoopSimObject_swigregister = _sim_services.IntegLoopSimObject_swigregister +IntegLoopSimObject_swigregister(IntegLoopSimObject) + + +def castAsIntegLoopSimObject(*args): + return _sim_services.castAsIntegLoopSimObject(*args) +castAsIntegLoopSimObject = _sim_services.castAsIntegLoopSimObject +BIG_TGO = _sim_services.BIG_TGO +Decreasing = _sim_services.Decreasing +Any = _sim_services.Any +Increasing = _sim_services.Increasing +class REGULA_FALSI(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, REGULA_FALSI, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, REGULA_FALSI, name) + __repr__ = _swig_repr + __swig_setmethods__["lower_set"] = _sim_services.REGULA_FALSI_lower_set_set + __swig_getmethods__["lower_set"] = _sim_services.REGULA_FALSI_lower_set_get + if _newclass: + lower_set = _swig_property(_sim_services.REGULA_FALSI_lower_set_get, _sim_services.REGULA_FALSI_lower_set_set) + __swig_setmethods__["upper_set"] = _sim_services.REGULA_FALSI_upper_set_set + __swig_getmethods__["upper_set"] = _sim_services.REGULA_FALSI_upper_set_get + if _newclass: + upper_set = _swig_property(_sim_services.REGULA_FALSI_upper_set_get, _sim_services.REGULA_FALSI_upper_set_set) + __swig_setmethods__["iterations"] = _sim_services.REGULA_FALSI_iterations_set + __swig_getmethods__["iterations"] = _sim_services.REGULA_FALSI_iterations_get + if _newclass: + iterations = _swig_property(_sim_services.REGULA_FALSI_iterations_get, _sim_services.REGULA_FALSI_iterations_set) + __swig_setmethods__["fires"] = _sim_services.REGULA_FALSI_fires_set + __swig_getmethods__["fires"] = _sim_services.REGULA_FALSI_fires_get + if _newclass: + fires = _swig_property(_sim_services.REGULA_FALSI_fires_get, _sim_services.REGULA_FALSI_fires_set) + __swig_setmethods__["x_lower"] = _sim_services.REGULA_FALSI_x_lower_set + __swig_getmethods__["x_lower"] = _sim_services.REGULA_FALSI_x_lower_get + if _newclass: + x_lower = _swig_property(_sim_services.REGULA_FALSI_x_lower_get, _sim_services.REGULA_FALSI_x_lower_set) + __swig_setmethods__["t_lower"] = _sim_services.REGULA_FALSI_t_lower_set + __swig_getmethods__["t_lower"] = _sim_services.REGULA_FALSI_t_lower_get + if _newclass: + t_lower = _swig_property(_sim_services.REGULA_FALSI_t_lower_get, _sim_services.REGULA_FALSI_t_lower_set) + __swig_setmethods__["x_upper"] = _sim_services.REGULA_FALSI_x_upper_set + __swig_getmethods__["x_upper"] = _sim_services.REGULA_FALSI_x_upper_get + if _newclass: + x_upper = _swig_property(_sim_services.REGULA_FALSI_x_upper_get, _sim_services.REGULA_FALSI_x_upper_set) + __swig_setmethods__["t_upper"] = _sim_services.REGULA_FALSI_t_upper_set + __swig_getmethods__["t_upper"] = _sim_services.REGULA_FALSI_t_upper_get + if _newclass: + t_upper = _swig_property(_sim_services.REGULA_FALSI_t_upper_get, _sim_services.REGULA_FALSI_t_upper_set) + __swig_setmethods__["delta_time"] = _sim_services.REGULA_FALSI_delta_time_set + __swig_getmethods__["delta_time"] = _sim_services.REGULA_FALSI_delta_time_get + if _newclass: + delta_time = _swig_property(_sim_services.REGULA_FALSI_delta_time_get, _sim_services.REGULA_FALSI_delta_time_set) + __swig_setmethods__["error"] = _sim_services.REGULA_FALSI_error_set + __swig_getmethods__["error"] = _sim_services.REGULA_FALSI_error_get + if _newclass: + error = _swig_property(_sim_services.REGULA_FALSI_error_get, _sim_services.REGULA_FALSI_error_set) + __swig_setmethods__["last_error"] = _sim_services.REGULA_FALSI_last_error_set + __swig_getmethods__["last_error"] = _sim_services.REGULA_FALSI_last_error_get + if _newclass: + last_error = _swig_property(_sim_services.REGULA_FALSI_last_error_get, _sim_services.REGULA_FALSI_last_error_set) + __swig_setmethods__["last_tgo"] = _sim_services.REGULA_FALSI_last_tgo_set + __swig_getmethods__["last_tgo"] = _sim_services.REGULA_FALSI_last_tgo_get + if _newclass: + last_tgo = _swig_property(_sim_services.REGULA_FALSI_last_tgo_get, _sim_services.REGULA_FALSI_last_tgo_set) + __swig_setmethods__["error_tol"] = _sim_services.REGULA_FALSI_error_tol_set + __swig_getmethods__["error_tol"] = _sim_services.REGULA_FALSI_error_tol_get + if _newclass: + error_tol = _swig_property(_sim_services.REGULA_FALSI_error_tol_get, _sim_services.REGULA_FALSI_error_tol_set) + __swig_setmethods__["mode"] = _sim_services.REGULA_FALSI_mode_set + __swig_getmethods__["mode"] = _sim_services.REGULA_FALSI_mode_get + if _newclass: + mode = _swig_property(_sim_services.REGULA_FALSI_mode_get, _sim_services.REGULA_FALSI_mode_set) + __swig_setmethods__["function_slope"] = _sim_services.REGULA_FALSI_function_slope_set + __swig_getmethods__["function_slope"] = _sim_services.REGULA_FALSI_function_slope_get + if _newclass: + function_slope = _swig_property(_sim_services.REGULA_FALSI_function_slope_get, _sim_services.REGULA_FALSI_function_slope_set) + + def __init__(self): + this = _sim_services.new_REGULA_FALSI() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_REGULA_FALSI + __del__ = lambda self: None +REGULA_FALSI_swigregister = _sim_services.REGULA_FALSI_swigregister +REGULA_FALSI_swigregister(REGULA_FALSI) + + +def regula_falsi(*args): + return _sim_services.regula_falsi(*args) +regula_falsi = _sim_services.regula_falsi + +def reset_regula_falsi(*args): + return _sim_services.reset_regula_falsi(*args) +reset_regula_falsi = _sim_services.reset_regula_falsi + +def regula_falsi_set_upper(*args): + return _sim_services.regula_falsi_set_upper(*args) +regula_falsi_set_upper = _sim_services.regula_falsi_set_upper + +def regula_falsi_set_lower(*args): + return _sim_services.regula_falsi_set_lower(*args) +regula_falsi_set_lower = _sim_services.regula_falsi_set_lower +class Er7UtilsDeletable(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Er7UtilsDeletable, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Er7UtilsDeletable, name) + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_Er7UtilsDeletable + __del__ = lambda self: None + + def __init__(self): + this = _sim_services.new_Er7UtilsDeletable() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this +Er7UtilsDeletable_swigregister = _sim_services.Er7UtilsDeletable_swigregister +Er7UtilsDeletable_swigregister(Er7UtilsDeletable) + +class GeneralizedPositionDerivativeFunctions(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, GeneralizedPositionDerivativeFunctions, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, GeneralizedPositionDerivativeFunctions, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_GeneralizedPositionDerivativeFunctions(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_GeneralizedPositionDerivativeFunctions + __del__ = lambda self: None + __swig_setmethods__["first_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_set + __swig_getmethods__["first_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_get + if _newclass: + first_deriv_fun = _swig_property(_sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_get, _sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_set) + __swig_setmethods__["second_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_set + __swig_getmethods__["second_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_get + if _newclass: + second_deriv_fun = _swig_property(_sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_get, _sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_set) +GeneralizedPositionDerivativeFunctions_swigregister = _sim_services.GeneralizedPositionDerivativeFunctions_swigregister +GeneralizedPositionDerivativeFunctions_swigregister(GeneralizedPositionDerivativeFunctions) + +class GeneralizedPositionStepFunctions(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, GeneralizedPositionStepFunctions, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, GeneralizedPositionStepFunctions, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_GeneralizedPositionStepFunctions(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_GeneralizedPositionStepFunctions + __del__ = lambda self: None + __swig_setmethods__["expmap_step_fun"] = _sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_set + __swig_getmethods__["expmap_step_fun"] = _sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_get + if _newclass: + expmap_step_fun = _swig_property(_sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_get, _sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_set) + __swig_setmethods__["dexpinv_xform_fun"] = _sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_set + __swig_getmethods__["dexpinv_xform_fun"] = _sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_get + if _newclass: + dexpinv_xform_fun = _swig_property(_sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_get, _sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_set) +GeneralizedPositionStepFunctions_swigregister = _sim_services.GeneralizedPositionStepFunctions_swigregister +GeneralizedPositionStepFunctions_swigregister(GeneralizedPositionStepFunctions) + +class Integration(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Integration, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Integration, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined") + __repr__ = _swig_repr + Unspecified = _sim_services.Integration_Unspecified + Euler = _sim_services.Integration_Euler + SymplecticEuler = _sim_services.Integration_SymplecticEuler + Beeman = _sim_services.Integration_Beeman + NystromLear2 = _sim_services.Integration_NystromLear2 + PositionVerlet = _sim_services.Integration_PositionVerlet + RK2Heun = _sim_services.Integration_RK2Heun + RK2Midpoint = _sim_services.Integration_RK2Midpoint + VelocityVerlet = _sim_services.Integration_VelocityVerlet + ModifiedMidpoint4 = _sim_services.Integration_ModifiedMidpoint4 + AdamsBashforthMoulton4 = _sim_services.Integration_AdamsBashforthMoulton4 + RungeKutta4 = _sim_services.Integration_RungeKutta4 + RKGill4 = _sim_services.Integration_RKGill4 + RKNystrom4 = _sim_services.Integration_RKNystrom4 + RKFehlberg45 = _sim_services.Integration_RKFehlberg45 + RKFehlberg78 = _sim_services.Integration_RKFehlberg78 + Unsupported = _sim_services.Integration_Unsupported + Invalid = _sim_services.Integration_Invalid + FirstOrderODE = _sim_services.Integration_FirstOrderODE + SimpleSecondOrderODE = _sim_services.Integration_SimpleSecondOrderODE + GeneralizedDerivSecondOrderODE = _sim_services.Integration_GeneralizedDerivSecondOrderODE + GeneralizedStepSecondOrderODE = _sim_services.Integration_GeneralizedStepSecondOrderODE +Integration_swigregister = _sim_services.Integration_swigregister +Integration_swigregister(Integration) + +class IntegratorConstructor(Er7UtilsDeletable): + __swig_setmethods__ = {} + for _s in [Er7UtilsDeletable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [Er7UtilsDeletable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, IntegratorConstructor, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_IntegratorConstructor + __del__ = lambda self: None + + def get_class_name(self, *args): + return _sim_services.IntegratorConstructor_get_class_name(self, *args) + + def provides(self, *args): + return _sim_services.IntegratorConstructor_provides(self, *args) + + def implements(self, *args): + return _sim_services.IntegratorConstructor_implements(self, *args) + + def need_first_step_derivatives(self, *args): + return _sim_services.IntegratorConstructor_need_first_step_derivatives(self, *args) + + def is_fixed_step_integrator(self, *args): + return _sim_services.IntegratorConstructor_is_fixed_step_integrator(self, *args) + + def is_second_order_ode_technique(self, *args): + return _sim_services.IntegratorConstructor_is_second_order_ode_technique(self, *args) + + def get_buffer_size(self, *args): + return _sim_services.IntegratorConstructor_get_buffer_size(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.IntegratorConstructor_get_transition_table_size(self, *args) + + def create_copy(self, *args): + return _sim_services.IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.IntegratorConstructor_create_integration_controls(self, *args) + + def create_integrator_results_merger(self, *args): + return _sim_services.IntegratorConstructor_create_integrator_results_merger(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) +IntegratorConstructor_swigregister = _sim_services.IntegratorConstructor_swigregister +IntegratorConstructor_swigregister(IntegratorConstructor) + +class PrimingIntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, PrimingIntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, PrimingIntegratorConstructor, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_PrimingIntegratorConstructor + __del__ = lambda self: None + + def get_primer_constructor(self, *args): + return _sim_services.PrimingIntegratorConstructor_get_primer_constructor(self, *args) + + def is_fixed_step_integrator(self, *args): + return _sim_services.PrimingIntegratorConstructor_is_fixed_step_integrator(self, *args) + + def get_buffer_size(self, *args): + return _sim_services.PrimingIntegratorConstructor_get_buffer_size(self, *args) + + def get_history_length(self, *args): + return _sim_services.PrimingIntegratorConstructor_get_history_length(self, *args) +PrimingIntegratorConstructor_swigregister = _sim_services.PrimingIntegratorConstructor_swigregister +PrimingIntegratorConstructor_swigregister(PrimingIntegratorConstructor) + +class RK4IntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RK4IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RK4IntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.RK4IntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.RK4IntegratorConstructor_create_constructor + + def get_class_name(self, *args): + return _sim_services.RK4IntegratorConstructor_get_class_name(self, *args) + + def create_copy(self, *args): + return _sim_services.RK4IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.RK4IntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.RK4IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.RK4IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.RK4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.RK4IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.RK4IntegratorConstructor_get_transition_table_size(self, *args) + + def __init__(self): + this = _sim_services.new_RK4IntegratorConstructor() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RK4IntegratorConstructor + __del__ = lambda self: None +RK4IntegratorConstructor_swigregister = _sim_services.RK4IntegratorConstructor_swigregister +RK4IntegratorConstructor_swigregister(RK4IntegratorConstructor) + +def RK4IntegratorConstructor_create_constructor(*args): + return _sim_services.RK4IntegratorConstructor_create_constructor(*args) +RK4IntegratorConstructor_create_constructor = _sim_services.RK4IntegratorConstructor_create_constructor + +class ABM4IntegratorConstructor(PrimingIntegratorConstructor): + __swig_setmethods__ = {} + for _s in [PrimingIntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ABM4IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [PrimingIntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ABM4IntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.ABM4IntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.ABM4IntegratorConstructor_create_constructor + + def __init__(self, *args): + this = _sim_services.new_ABM4IntegratorConstructor(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def get_class_name(self, *args): + return _sim_services.ABM4IntegratorConstructor_get_class_name(self, *args) + + def implements(self, *args): + return _sim_services.ABM4IntegratorConstructor_implements(self, *args) + + def provides(self, *args): + return _sim_services.ABM4IntegratorConstructor_provides(self, *args) + + def create_copy(self, *args): + return _sim_services.ABM4IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.ABM4IntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.ABM4IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.ABM4IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.ABM4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.ABM4IntegratorConstructor_get_transition_table_size(self, *args) + + def get_history_length(self, *args): + return _sim_services.ABM4IntegratorConstructor_get_history_length(self, *args) + __swig_destroy__ = _sim_services.delete_ABM4IntegratorConstructor + __del__ = lambda self: None +ABM4IntegratorConstructor_swigregister = _sim_services.ABM4IntegratorConstructor_swigregister +ABM4IntegratorConstructor_swigregister(ABM4IntegratorConstructor) + +def ABM4IntegratorConstructor_create_constructor(*args): + return _sim_services.ABM4IntegratorConstructor_create_constructor(*args) +ABM4IntegratorConstructor_create_constructor = _sim_services.ABM4IntegratorConstructor_create_constructor + +class StateIntegratorInterface(Er7UtilsDeletable): + __swig_setmethods__ = {} + for _s in [Er7UtilsDeletable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, StateIntegratorInterface, name, value) + __swig_getmethods__ = {} + for _s in [Er7UtilsDeletable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, StateIntegratorInterface, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_StateIntegratorInterface + __del__ = lambda self: None + + def reset_integrator(self, *args): + return _sim_services.StateIntegratorInterface_reset_integrator(self, *args) + + def create_copy(self, *args): + return _sim_services.StateIntegratorInterface_create_copy(self, *args) +StateIntegratorInterface_swigregister = _sim_services.StateIntegratorInterface_swigregister +StateIntegratorInterface_swigregister(StateIntegratorInterface) + +class IntegratorResult(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorResult, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, IntegratorResult, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_IntegratorResult(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def get_time_scale(self, *args): + return _sim_services.IntegratorResult_get_time_scale(self, *args) + + def get_passed(self, *args): + return _sim_services.IntegratorResult_get_passed(self, *args) + + def get_failure_mode(self, *args): + return _sim_services.IntegratorResult_get_failure_mode(self, *args) + + def get_merge_count(self, *args): + return _sim_services.IntegratorResult_get_merge_count(self, *args) + + def set_time_scale(self, *args): + return _sim_services.IntegratorResult_set_time_scale(self, *args) + + def set_passed(self, *args): + return _sim_services.IntegratorResult_set_passed(self, *args) + + def set_failed(self, *args): + return _sim_services.IntegratorResult_set_failed(self, *args) + + def set_failure_mode(self, *args): + return _sim_services.IntegratorResult_set_failure_mode(self, *args) + + def mark_as_integrated(self, *args): + return _sim_services.IntegratorResult_mark_as_integrated(self, *args) + + def mark_as_not_integrated(self, *args): + return _sim_services.IntegratorResult_mark_as_not_integrated(self, *args) + + def increment_merge_count(self, *args): + return _sim_services.IntegratorResult_increment_merge_count(self, *args) + __swig_destroy__ = _sim_services.delete_IntegratorResult + __del__ = lambda self: None +IntegratorResult_swigregister = _sim_services.IntegratorResult_swigregister +IntegratorResult_swigregister(IntegratorResult) + +class FirstOrderODEIntegrator(StateIntegratorInterface): + __swig_setmethods__ = {} + for _s in [StateIntegratorInterface]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, FirstOrderODEIntegrator, name, value) + __swig_getmethods__ = {} + for _s in [StateIntegratorInterface]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, FirstOrderODEIntegrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_FirstOrderODEIntegrator + __del__ = lambda self: None + + def create_copy(self, *args): + return _sim_services.FirstOrderODEIntegrator_create_copy(self, *args) + + def set_controls(self, *args): + return _sim_services.FirstOrderODEIntegrator_set_controls(self, *args) + + def integrate(self, *args): + return _sim_services.FirstOrderODEIntegrator_integrate(self, *args) +FirstOrderODEIntegrator_swigregister = _sim_services.FirstOrderODEIntegrator_swigregister +FirstOrderODEIntegrator_swigregister(FirstOrderODEIntegrator) + +class SecondOrderODEIntegrator(StateIntegratorInterface): + __swig_setmethods__ = {} + for _s in [StateIntegratorInterface]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, SecondOrderODEIntegrator, name, value) + __swig_getmethods__ = {} + for _s in [StateIntegratorInterface]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, SecondOrderODEIntegrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_SecondOrderODEIntegrator + __del__ = lambda self: None + + def create_copy(self, *args): + return _sim_services.SecondOrderODEIntegrator_create_copy(self, *args) + + def set_controls(self, *args): + return _sim_services.SecondOrderODEIntegrator_set_controls(self, *args) + + def set_position_derivative_functions(self, *args): + return _sim_services.SecondOrderODEIntegrator_set_position_derivative_functions(self, *args) + + def set_position_step_functions(self, *args): + return _sim_services.SecondOrderODEIntegrator_set_position_step_functions(self, *args) + + def integrate(self, *args): + return _sim_services.SecondOrderODEIntegrator_integrate(self, *args) +SecondOrderODEIntegrator_swigregister = _sim_services.SecondOrderODEIntegrator_swigregister +SecondOrderODEIntegrator_swigregister(SecondOrderODEIntegrator) + +class IntegratorInterface(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorInterface, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, IntegratorInterface, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_IntegratorInterface + __del__ = lambda self: None + + def get_dt(self, *args): + return _sim_services.IntegratorInterface_get_dt(self, *args) + + def get_first_step_derivs_flag(self, *args): + return _sim_services.IntegratorInterface_get_first_step_derivs_flag(self, *args) + + def set_first_step_derivs_flag(self, *args): + return _sim_services.IntegratorInterface_set_first_step_derivs_flag(self, *args) + + def reset_first_step_derivs_flag(self, *args): + return _sim_services.IntegratorInterface_reset_first_step_derivs_flag(self, *args) + + def restore_first_step_derivs_flag(self, *args): + return _sim_services.IntegratorInterface_restore_first_step_derivs_flag(self, *args) + + def set_step_number(self, *args): + return _sim_services.IntegratorInterface_set_step_number(self, *args) + + def set_time(self, *args): + return _sim_services.IntegratorInterface_set_time(self, *args) +IntegratorInterface_swigregister = _sim_services.IntegratorInterface_swigregister +IntegratorInterface_swigregister(IntegratorInterface) + +class IntegrationControls(Er7UtilsDeletable): + __swig_setmethods__ = {} + for _s in [Er7UtilsDeletable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegrationControls, name, value) + __swig_getmethods__ = {} + for _s in [Er7UtilsDeletable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, IntegrationControls, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_IntegrationControls + __del__ = lambda self: None + + def create_copy(self, *args): + return _sim_services.IntegrationControls_create_copy(self, *args) + + def get_simtime(self, *args): + return _sim_services.IntegrationControls_get_simtime(self, *args) + + def get_final_stage(self, *args): + return _sim_services.IntegrationControls_get_final_stage(self, *args) + + def get_step_number(self, *args): + return _sim_services.IntegrationControls_get_step_number(self, *args) + + def in_initial_cycle(self, *args): + return _sim_services.IntegrationControls_in_initial_cycle(self, *args) + + def get_expected_step_number(self, *args): + return _sim_services.IntegrationControls_get_expected_step_number(self, *args) + + def get_reset_needed(self, *args): + return _sim_services.IntegrationControls_get_reset_needed(self, *args) + + def set_reset_needed(self, *args): + return _sim_services.IntegrationControls_set_reset_needed(self, *args) + + def get_transition_table_element(self, *args): + return _sim_services.IntegrationControls_get_transition_table_element(self, *args) + + def set_transition_table_element(self, *args): + return _sim_services.IntegrationControls_set_transition_table_element(self, *args) + + def integrate(self, *args): + return _sim_services.IntegrationControls_integrate(self, *args) + + def reset_integrator(self, *args): + return _sim_services.IntegrationControls_reset_integrator(self, *args) +IntegrationControls_swigregister = _sim_services.IntegrationControls_swigregister +IntegrationControls_swigregister(IntegrationControls) + +class BaseIntegrationGroup(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, BaseIntegrationGroup, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, BaseIntegrationGroup, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_BaseIntegrationGroup + __del__ = lambda self: None + + def reset_integrators(self, *args): + return _sim_services.BaseIntegrationGroup_reset_integrators(self, *args) + + def get_first_step_derivs_flag(self, *args): + return _sim_services.BaseIntegrationGroup_get_first_step_derivs_flag(self, *args) + + def integrate_group(self, *args): + return _sim_services.BaseIntegrationGroup_integrate_group(self, *args) + + def integrate_group_from(self, *args): + return _sim_services.BaseIntegrationGroup_integrate_group_from(self, *args) + + def integrate_group_to(self, *args): + return _sim_services.BaseIntegrationGroup_integrate_group_to(self, *args) + + def initialize_group(self, *args): + return _sim_services.BaseIntegrationGroup_initialize_group(self, *args) + + def update_integration_interface(self, *args): + return _sim_services.BaseIntegrationGroup_update_integration_interface(self, *args) + + def integrate_bodies(self, *args): + return _sim_services.BaseIntegrationGroup_integrate_bodies(self, *args) + + def reset_body_integrators(self, *args): + return _sim_services.BaseIntegrationGroup_reset_body_integrators(self, *args) +BaseIntegrationGroup_swigregister = _sim_services.BaseIntegrationGroup_swigregister +BaseIntegrationGroup_swigregister(BaseIntegrationGroup) + +class TimeInterface(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TimeInterface, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TimeInterface, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_TimeInterface + __del__ = lambda self: None + + def update_time(self, *args): + return _sim_services.TimeInterface_update_time(self, *args) + + def get_time_scale_factor(self, *args): + return _sim_services.TimeInterface_get_time_scale_factor(self, *args) +TimeInterface_swigregister = _sim_services.TimeInterface_swigregister +TimeInterface_swigregister(TimeInterface) + +class TrickIntegrator(Integrator): + __swig_setmethods__ = {} + for _s in [Integrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, TrickIntegrator, name, value) + __swig_getmethods__ = {} + for _s in [Integrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, TrickIntegrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + InvalidIntegrationMode = _sim_services.TrickIntegrator_InvalidIntegrationMode + UseFirstOrderIntegrator = _sim_services.TrickIntegrator_UseFirstOrderIntegrator + UseSecondOrderIntegrator = _sim_services.TrickIntegrator_UseSecondOrderIntegrator + __swig_destroy__ = _sim_services.delete_TrickIntegrator + __del__ = lambda self: None + + def integrate(self, *args): + return _sim_services.TrickIntegrator_integrate(self, *args) + + def initialize(self, *args): + return _sim_services.TrickIntegrator_initialize(self, *args) + + def integrate_1st_order_ode(self, *args): + return _sim_services.TrickIntegrator_integrate_1st_order_ode(self, *args) + + def integrate_2nd_order_ode(self, *args): + return _sim_services.TrickIntegrator_integrate_2nd_order_ode(self, *args) +TrickIntegrator_swigregister = _sim_services.TrickIntegrator_swigregister +TrickIntegrator_swigregister(TrickIntegrator) + +class TrickFirstOrderOdeIntegrator(TrickIntegrator): + __swig_setmethods__ = {} + for _s in [TrickIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, TrickFirstOrderOdeIntegrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, TrickFirstOrderOdeIntegrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_TrickFirstOrderOdeIntegrator + __del__ = lambda self: None +TrickFirstOrderOdeIntegrator_swigregister = _sim_services.TrickFirstOrderOdeIntegrator_swigregister +TrickFirstOrderOdeIntegrator_swigregister(TrickFirstOrderOdeIntegrator) + +class ABM_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ABM_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ABM_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_ABM_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ABM_IntegratorHelper + __del__ = lambda self: None +ABM_IntegratorHelper_swigregister = _sim_services.ABM_IntegratorHelper_swigregister +ABM_IntegratorHelper_swigregister(ABM_IntegratorHelper) + +class ABM_Integrator(TrickFirstOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ABM_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ABM_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_ABM_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.ABM_Integrator_get_Integrator_type(self, *args) +ABM_Integrator_swigregister = _sim_services.ABM_Integrator_swigregister +ABM_Integrator_swigregister(ABM_Integrator) + +class SymplecticEulerIntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, SymplecticEulerIntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, SymplecticEulerIntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.SymplecticEulerIntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.SymplecticEulerIntegratorConstructor_create_constructor + + def __init__(self, *args): + this = _sim_services.new_SymplecticEulerIntegratorConstructor(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_SymplecticEulerIntegratorConstructor + __del__ = lambda self: None + + def get_class_name(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_get_class_name(self, *args) + + def implements(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_implements(self, *args) + + def create_copy(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) + + def is_second_order_ode_technique(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_is_second_order_ode_technique(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.SymplecticEulerIntegratorConstructor_get_transition_table_size(self, *args) +SymplecticEulerIntegratorConstructor_swigregister = _sim_services.SymplecticEulerIntegratorConstructor_swigregister +SymplecticEulerIntegratorConstructor_swigregister(SymplecticEulerIntegratorConstructor) + +def SymplecticEulerIntegratorConstructor_create_constructor(*args): + return _sim_services.SymplecticEulerIntegratorConstructor_create_constructor(*args) +SymplecticEulerIntegratorConstructor_create_constructor = _sim_services.SymplecticEulerIntegratorConstructor_create_constructor + +class TrickSecondOrderOdeIntegrator(TrickIntegrator): + __swig_setmethods__ = {} + for _s in [TrickIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, TrickSecondOrderOdeIntegrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, TrickSecondOrderOdeIntegrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_TrickSecondOrderOdeIntegrator + __del__ = lambda self: None +TrickSecondOrderOdeIntegrator_swigregister = _sim_services.TrickSecondOrderOdeIntegrator_swigregister +TrickSecondOrderOdeIntegrator_swigregister(TrickSecondOrderOdeIntegrator) + +class Euler_Cromer_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_Cromer_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Euler_Cromer_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_Euler_Cromer_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_Euler_Cromer_IntegratorHelper + __del__ = lambda self: None +Euler_Cromer_IntegratorHelper_swigregister = _sim_services.Euler_Cromer_IntegratorHelper_swigregister +Euler_Cromer_IntegratorHelper_swigregister(Euler_Cromer_IntegratorHelper) + +class Euler_Cromer_Integrator(TrickSecondOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickSecondOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_Cromer_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickSecondOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, Euler_Cromer_Integrator, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_Euler_Cromer_Integrator(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def integrate(self, *args): + return _sim_services.Euler_Cromer_Integrator_integrate(self, *args) + __swig_destroy__ = _sim_services.delete_Euler_Cromer_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.Euler_Cromer_Integrator_get_Integrator_type(self, *args) +Euler_Cromer_Integrator_swigregister = _sim_services.Euler_Cromer_Integrator_swigregister +Euler_Cromer_Integrator_swigregister(Euler_Cromer_Integrator) + +class EulerIntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, EulerIntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, EulerIntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.EulerIntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.EulerIntegratorConstructor_create_constructor + + def __init__(self, *args): + this = _sim_services.new_EulerIntegratorConstructor(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_EulerIntegratorConstructor + __del__ = lambda self: None + + def get_class_name(self, *args): + return _sim_services.EulerIntegratorConstructor_get_class_name(self, *args) + + def create_copy(self, *args): + return _sim_services.EulerIntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.EulerIntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.EulerIntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.EulerIntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.EulerIntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.EulerIntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.EulerIntegratorConstructor_get_transition_table_size(self, *args) +EulerIntegratorConstructor_swigregister = _sim_services.EulerIntegratorConstructor_swigregister +EulerIntegratorConstructor_swigregister(EulerIntegratorConstructor) + +def EulerIntegratorConstructor_create_constructor(*args): + return _sim_services.EulerIntegratorConstructor_create_constructor(*args) +EulerIntegratorConstructor_create_constructor = _sim_services.EulerIntegratorConstructor_create_constructor + +class Euler_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Euler_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_Euler_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_Euler_IntegratorHelper + __del__ = lambda self: None +Euler_IntegratorHelper_swigregister = _sim_services.Euler_IntegratorHelper_swigregister +Euler_IntegratorHelper_swigregister(Euler_IntegratorHelper) + +class Euler_Integrator(TrickFirstOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, Euler_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_Euler_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.Euler_Integrator_get_Integrator_type(self, *args) +Euler_Integrator_swigregister = _sim_services.Euler_Integrator_swigregister +Euler_Integrator_swigregister(Euler_Integrator) + +class MM4IntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MM4IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MM4IntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.MM4IntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.MM4IntegratorConstructor_create_constructor + + def get_class_name(self, *args): + return _sim_services.MM4IntegratorConstructor_get_class_name(self, *args) + + def implements(self, *args): + return _sim_services.MM4IntegratorConstructor_implements(self, *args) + + def provides(self, *args): + return _sim_services.MM4IntegratorConstructor_provides(self, *args) + + def create_copy(self, *args): + return _sim_services.MM4IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.MM4IntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.MM4IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.MM4IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.MM4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def is_second_order_ode_technique(self, *args): + return _sim_services.MM4IntegratorConstructor_is_second_order_ode_technique(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.MM4IntegratorConstructor_get_transition_table_size(self, *args) + + def __init__(self): + this = _sim_services.new_MM4IntegratorConstructor() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MM4IntegratorConstructor + __del__ = lambda self: None +MM4IntegratorConstructor_swigregister = _sim_services.MM4IntegratorConstructor_swigregister +MM4IntegratorConstructor_swigregister(MM4IntegratorConstructor) + +def MM4IntegratorConstructor_create_constructor(*args): + return _sim_services.MM4IntegratorConstructor_create_constructor(*args) +MM4IntegratorConstructor_create_constructor = _sim_services.MM4IntegratorConstructor_create_constructor + +class MM4_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MM4_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MM4_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_MM4_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MM4_IntegratorHelper + __del__ = lambda self: None +MM4_IntegratorHelper_swigregister = _sim_services.MM4_IntegratorHelper_swigregister +MM4_IntegratorHelper_swigregister(MM4_IntegratorHelper) + +class MM4_Integrator(TrickSecondOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickSecondOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MM4_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickSecondOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MM4_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_MM4_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.MM4_Integrator_get_Integrator_type(self, *args) +MM4_Integrator_swigregister = _sim_services.MM4_Integrator_swigregister +MM4_Integrator_swigregister(MM4_Integrator) + +class NystromLear2IntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, NystromLear2IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, NystromLear2IntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.NystromLear2IntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.NystromLear2IntegratorConstructor_create_constructor + + def __init__(self, *args): + this = _sim_services.new_NystromLear2IntegratorConstructor(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_NystromLear2IntegratorConstructor + __del__ = lambda self: None + + def get_class_name(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_get_class_name(self, *args) + + def implements(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_implements(self, *args) + + def provides(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_provides(self, *args) + + def create_copy(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def is_second_order_ode_technique(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_is_second_order_ode_technique(self, *args) + + def need_first_step_derivatives(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_need_first_step_derivatives(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.NystromLear2IntegratorConstructor_get_transition_table_size(self, *args) +NystromLear2IntegratorConstructor_swigregister = _sim_services.NystromLear2IntegratorConstructor_swigregister +NystromLear2IntegratorConstructor_swigregister(NystromLear2IntegratorConstructor) + +def NystromLear2IntegratorConstructor_create_constructor(*args): + return _sim_services.NystromLear2IntegratorConstructor_create_constructor(*args) +NystromLear2IntegratorConstructor_create_constructor = _sim_services.NystromLear2IntegratorConstructor_create_constructor + +class NL2_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, NL2_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, NL2_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_NL2_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_NL2_IntegratorHelper + __del__ = lambda self: None +NL2_IntegratorHelper_swigregister = _sim_services.NL2_IntegratorHelper_swigregister +NL2_IntegratorHelper_swigregister(NL2_IntegratorHelper) + +class NL2_Integrator(TrickSecondOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickSecondOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, NL2_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickSecondOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, NL2_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_NL2_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.NL2_Integrator_get_Integrator_type(self, *args) +NL2_Integrator_swigregister = _sim_services.NL2_Integrator_swigregister +NL2_Integrator_swigregister(NL2_Integrator) + +class RK2HeunIntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RK2HeunIntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RK2HeunIntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.RK2HeunIntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.RK2HeunIntegratorConstructor_create_constructor + + def __init__(self, *args): + this = _sim_services.new_RK2HeunIntegratorConstructor(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RK2HeunIntegratorConstructor + __del__ = lambda self: None + + def get_class_name(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_get_class_name(self, *args) + + def create_copy(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.RK2HeunIntegratorConstructor_get_transition_table_size(self, *args) +RK2HeunIntegratorConstructor_swigregister = _sim_services.RK2HeunIntegratorConstructor_swigregister +RK2HeunIntegratorConstructor_swigregister(RK2HeunIntegratorConstructor) + +def RK2HeunIntegratorConstructor_create_constructor(*args): + return _sim_services.RK2HeunIntegratorConstructor_create_constructor(*args) +RK2HeunIntegratorConstructor_create_constructor = _sim_services.RK2HeunIntegratorConstructor_create_constructor + +class RK2_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RK2_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RK2_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_RK2_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RK2_IntegratorHelper + __del__ = lambda self: None +RK2_IntegratorHelper_swigregister = _sim_services.RK2_IntegratorHelper_swigregister +RK2_IntegratorHelper_swigregister(RK2_IntegratorHelper) + +class RK2_Integrator(TrickFirstOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RK2_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RK2_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_RK2_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.RK2_Integrator_get_Integrator_type(self, *args) +RK2_Integrator_swigregister = _sim_services.RK2_Integrator_swigregister +RK2_Integrator_swigregister(RK2_Integrator) + +class RK4_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RK4_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RK4_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_RK4_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RK4_IntegratorHelper + __del__ = lambda self: None +RK4_IntegratorHelper_swigregister = _sim_services.RK4_IntegratorHelper_swigregister +RK4_IntegratorHelper_swigregister(RK4_IntegratorHelper) + +class RK4_Integrator(TrickFirstOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RK4_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RK4_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_RK4_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.RK4_Integrator_get_Integrator_type(self, *args) +RK4_Integrator_swigregister = _sim_services.RK4_Integrator_swigregister +RK4_Integrator_swigregister(RK4_Integrator) + +class RKFehlberg45IntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RKFehlberg45IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RKFehlberg45IntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.RKFehlberg45IntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.RKFehlberg45IntegratorConstructor_create_constructor + + def get_class_name(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_get_class_name(self, *args) + + def create_copy(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.RKFehlberg45IntegratorConstructor_get_transition_table_size(self, *args) + + def __init__(self): + this = _sim_services.new_RKFehlberg45IntegratorConstructor() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RKFehlberg45IntegratorConstructor + __del__ = lambda self: None +RKFehlberg45IntegratorConstructor_swigregister = _sim_services.RKFehlberg45IntegratorConstructor_swigregister +RKFehlberg45IntegratorConstructor_swigregister(RKFehlberg45IntegratorConstructor) + +def RKFehlberg45IntegratorConstructor_create_constructor(*args): + return _sim_services.RKFehlberg45IntegratorConstructor_create_constructor(*args) +RKFehlberg45IntegratorConstructor_create_constructor = _sim_services.RKFehlberg45IntegratorConstructor_create_constructor + +class RKF45_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RKF45_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RKF45_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_RKF45_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RKF45_IntegratorHelper + __del__ = lambda self: None +RKF45_IntegratorHelper_swigregister = _sim_services.RKF45_IntegratorHelper_swigregister +RKF45_IntegratorHelper_swigregister(RKF45_IntegratorHelper) + +class RKF45_Integrator(TrickFirstOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RKF45_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RKF45_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_RKF45_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.RKF45_Integrator_get_Integrator_type(self, *args) +RKF45_Integrator_swigregister = _sim_services.RKF45_Integrator_swigregister +RKF45_Integrator_swigregister(RKF45_Integrator) + +class RKFehlberg78IntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RKFehlberg78IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RKFehlberg78IntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.RKFehlberg78IntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.RKFehlberg78IntegratorConstructor_create_constructor + + def get_class_name(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_get_class_name(self, *args) + + def create_copy(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.RKFehlberg78IntegratorConstructor_get_transition_table_size(self, *args) + + def __init__(self): + this = _sim_services.new_RKFehlberg78IntegratorConstructor() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RKFehlberg78IntegratorConstructor + __del__ = lambda self: None +RKFehlberg78IntegratorConstructor_swigregister = _sim_services.RKFehlberg78IntegratorConstructor_swigregister +RKFehlberg78IntegratorConstructor_swigregister(RKFehlberg78IntegratorConstructor) + +def RKFehlberg78IntegratorConstructor_create_constructor(*args): + return _sim_services.RKFehlberg78IntegratorConstructor_create_constructor(*args) +RKFehlberg78IntegratorConstructor_create_constructor = _sim_services.RKFehlberg78IntegratorConstructor_create_constructor + +class RKF78_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RKF78_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RKF78_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_RKF78_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RKF78_IntegratorHelper + __del__ = lambda self: None +RKF78_IntegratorHelper_swigregister = _sim_services.RKF78_IntegratorHelper_swigregister +RKF78_IntegratorHelper_swigregister(RKF78_IntegratorHelper) + +class RKF78_Integrator(TrickFirstOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RKF78_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RKF78_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_RKF78_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.RKF78_Integrator_get_Integrator_type(self, *args) +RKF78_Integrator_swigregister = _sim_services.RKF78_Integrator_swigregister +RKF78_Integrator_swigregister(RKF78_Integrator) + +class RKGill4IntegratorConstructor(IntegratorConstructor): + __swig_setmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RKGill4IntegratorConstructor, name, value) + __swig_getmethods__ = {} + for _s in [IntegratorConstructor]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RKGill4IntegratorConstructor, name) + __repr__ = _swig_repr + if _newclass: + create_constructor = staticmethod(_sim_services.RKGill4IntegratorConstructor_create_constructor) + else: + create_constructor = _sim_services.RKGill4IntegratorConstructor_create_constructor + + def get_class_name(self, *args): + return _sim_services.RKGill4IntegratorConstructor_get_class_name(self, *args) + + def implements(self, *args): + return _sim_services.RKGill4IntegratorConstructor_implements(self, *args) + + def create_copy(self, *args): + return _sim_services.RKGill4IntegratorConstructor_create_copy(self, *args) + + def create_integration_controls(self, *args): + return _sim_services.RKGill4IntegratorConstructor_create_integration_controls(self, *args) + + def create_first_order_ode_integrator(self, *args): + return _sim_services.RKGill4IntegratorConstructor_create_first_order_ode_integrator(self, *args) + + def create_second_order_ode_integrator(self, *args): + return _sim_services.RKGill4IntegratorConstructor_create_second_order_ode_integrator(self, *args) + + def create_generalized_deriv_second_order_ode_integrator(self, *args): + return _sim_services.RKGill4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) + + def create_generalized_step_second_order_ode_integrator(self, *args): + return _sim_services.RKGill4IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) + + def get_transition_table_size(self, *args): + return _sim_services.RKGill4IntegratorConstructor_get_transition_table_size(self, *args) + + def __init__(self): + this = _sim_services.new_RKGill4IntegratorConstructor() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RKGill4IntegratorConstructor + __del__ = lambda self: None +RKGill4IntegratorConstructor_swigregister = _sim_services.RKGill4IntegratorConstructor_swigregister +RKGill4IntegratorConstructor_swigregister(RKGill4IntegratorConstructor) + +def RKGill4IntegratorConstructor_create_constructor(*args): + return _sim_services.RKGill4IntegratorConstructor_create_constructor(*args) +RKGill4IntegratorConstructor_create_constructor = _sim_services.RKGill4IntegratorConstructor_create_constructor + +class RKG4_IntegratorHelper(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RKG4_IntegratorHelper, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RKG4_IntegratorHelper, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_RKG4_IntegratorHelper() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RKG4_IntegratorHelper + __del__ = lambda self: None +RKG4_IntegratorHelper_swigregister = _sim_services.RKG4_IntegratorHelper_swigregister +RKG4_IntegratorHelper_swigregister(RKG4_IntegratorHelper) + +class RKG4_Integrator(TrickFirstOrderOdeIntegrator): + __swig_setmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, RKG4_Integrator, name, value) + __swig_getmethods__ = {} + for _s in [TrickFirstOrderOdeIntegrator]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, RKG4_Integrator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_RKG4_Integrator + __del__ = lambda self: None + + def get_Integrator_type(self, *args): + return _sim_services.RKG4_Integrator_get_Integrator_type(self, *args) +RKG4_Integrator_swigregister = _sim_services.RKG4_Integrator_swigregister +RKG4_Integrator_swigregister(RKG4_Integrator) + +class TIME_OFFSET(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TIME_OFFSET, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TIME_OFFSET, name) + __repr__ = _swig_repr + __swig_setmethods__["day"] = _sim_services.TIME_OFFSET_day_set + __swig_getmethods__["day"] = _sim_services.TIME_OFFSET_day_get + if _newclass: + day = _swig_property(_sim_services.TIME_OFFSET_day_get, _sim_services.TIME_OFFSET_day_set) + __swig_setmethods__["hour"] = _sim_services.TIME_OFFSET_hour_set + __swig_getmethods__["hour"] = _sim_services.TIME_OFFSET_hour_get + if _newclass: + hour = _swig_property(_sim_services.TIME_OFFSET_hour_get, _sim_services.TIME_OFFSET_hour_set) + __swig_setmethods__["min"] = _sim_services.TIME_OFFSET_min_set + __swig_getmethods__["min"] = _sim_services.TIME_OFFSET_min_get + if _newclass: + min = _swig_property(_sim_services.TIME_OFFSET_min_get, _sim_services.TIME_OFFSET_min_set) + __swig_setmethods__["sec"] = _sim_services.TIME_OFFSET_sec_set + __swig_getmethods__["sec"] = _sim_services.TIME_OFFSET_sec_get + if _newclass: + sec = _swig_property(_sim_services.TIME_OFFSET_sec_get, _sim_services.TIME_OFFSET_sec_set) + + def __init__(self): + this = _sim_services.new_TIME_OFFSET() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TIME_OFFSET + __del__ = lambda self: None +TIME_OFFSET_swigregister = _sim_services.TIME_OFFSET_swigregister +TIME_OFFSET_swigregister(TIME_OFFSET) + +class SimTime(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SimTime, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SimTime, name) + __repr__ = _swig_repr + __swig_setmethods__["ret_time"] = _sim_services.SimTime_ret_time_set + __swig_getmethods__["ret_time"] = _sim_services.SimTime_ret_time_get + if _newclass: + ret_time = _swig_property(_sim_services.SimTime_ret_time_get, _sim_services.SimTime_ret_time_set) + __swig_setmethods__["gmt_ref"] = _sim_services.SimTime_gmt_ref_set + __swig_getmethods__["gmt_ref"] = _sim_services.SimTime_gmt_ref_get + if _newclass: + gmt_ref = _swig_property(_sim_services.SimTime_gmt_ref_get, _sim_services.SimTime_gmt_ref_set) + __swig_setmethods__["gmt_sec_ref"] = _sim_services.SimTime_gmt_sec_ref_set + __swig_getmethods__["gmt_sec_ref"] = _sim_services.SimTime_gmt_sec_ref_get + if _newclass: + gmt_sec_ref = _swig_property(_sim_services.SimTime_gmt_sec_ref_get, _sim_services.SimTime_gmt_sec_ref_set) + __swig_setmethods__["gmt_time"] = _sim_services.SimTime_gmt_time_set + __swig_getmethods__["gmt_time"] = _sim_services.SimTime_gmt_time_get + if _newclass: + gmt_time = _swig_property(_sim_services.SimTime_gmt_time_get, _sim_services.SimTime_gmt_time_set) + __swig_setmethods__["met_ref"] = _sim_services.SimTime_met_ref_set + __swig_getmethods__["met_ref"] = _sim_services.SimTime_met_ref_get + if _newclass: + met_ref = _swig_property(_sim_services.SimTime_met_ref_get, _sim_services.SimTime_met_ref_set) + __swig_setmethods__["met_sec_ref"] = _sim_services.SimTime_met_sec_ref_set + __swig_getmethods__["met_sec_ref"] = _sim_services.SimTime_met_sec_ref_get + if _newclass: + met_sec_ref = _swig_property(_sim_services.SimTime_met_sec_ref_get, _sim_services.SimTime_met_sec_ref_set) + __swig_setmethods__["met_time"] = _sim_services.SimTime_met_time_set + __swig_getmethods__["met_time"] = _sim_services.SimTime_met_time_get + if _newclass: + met_time = _swig_property(_sim_services.SimTime_met_time_get, _sim_services.SimTime_met_time_set) + + def __init__(self, *args): + this = _sim_services.new_SimTime(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def init_times(self, *args): + return _sim_services.SimTime_init_times(self, *args) + + def get_rettime(self, *args): + return _sim_services.SimTime_get_rettime(self, *args) + + def get_gmttime(self, *args): + return _sim_services.SimTime_get_gmttime(self, *args) + + def get_mettime(self, *args): + return _sim_services.SimTime_get_mettime(self, *args) + + def get_rettime_struct(self, *args): + return _sim_services.SimTime_get_rettime_struct(self, *args) + + def get_gmttime_struct(self, *args): + return _sim_services.SimTime_get_gmttime_struct(self, *args) + + def get_mettime_struct(self, *args): + return _sim_services.SimTime_get_mettime_struct(self, *args) + __swig_destroy__ = _sim_services.delete_SimTime + __del__ = lambda self: None +SimTime_swigregister = _sim_services.SimTime_swigregister +SimTime_swigregister(SimTime) + + +def get_rettime(*args): + return _sim_services.get_rettime(*args) +get_rettime = _sim_services.get_rettime + +def get_gmttime(*args): + return _sim_services.get_gmttime(*args) +get_gmttime = _sim_services.get_gmttime + +def get_mettime(*args): + return _sim_services.get_mettime(*args) +get_mettime = _sim_services.get_mettime + +def get_rettime_struct(*args): + return _sim_services.get_rettime_struct(*args) +get_rettime_struct = _sim_services.get_rettime_struct + +def get_gmttime_struct(*args): + return _sim_services.get_gmttime_struct(*args) +get_gmttime_struct = _sim_services.get_gmttime_struct + +def get_mettime_struct(*args): + return _sim_services.get_mettime_struct(*args) +get_mettime_struct = _sim_services.get_mettime_struct +MS_ERROR_TIME = _sim_services.MS_ERROR_TIME +MS_ERROR_PORT = _sim_services.MS_ERROR_PORT +MS_ERROR_NAME = _sim_services.MS_ERROR_NAME +MS_NoCmd = _sim_services.MS_NoCmd +MS_FreezeCmd = _sim_services.MS_FreezeCmd +MS_RunCmd = _sim_services.MS_RunCmd +MS_ExitCmd = _sim_services.MS_ExitCmd +MS_ErrorCmd = _sim_services.MS_ErrorCmd +MS_ReconnectCmd = _sim_services.MS_ReconnectCmd +MS_ChkpntDumpAsciiCmd = _sim_services.MS_ChkpntDumpAsciiCmd +MS_ChkpntLoadAsciiCmd = _sim_services.MS_ChkpntLoadAsciiCmd +class MSConnect(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MSConnect, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MSConnect, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_MSConnect + __del__ = lambda self: None + + def set_sync_wait_limit(self, *args): + return _sim_services.MSConnect_set_sync_wait_limit(self, *args) + + def add_sim_args(self, *args): + return _sim_services.MSConnect_add_sim_args(self, *args) + + def process_sim_args(self, *args): + return _sim_services.MSConnect_process_sim_args(self, *args) + + def accept(self, *args): + return _sim_services.MSConnect_accept(self, *args) + + def connect(self, *args): + return _sim_services.MSConnect_connect(self, *args) + + def disconnect(self, *args): + return _sim_services.MSConnect_disconnect(self, *args) + + def read_time(self, *args): + return _sim_services.MSConnect_read_time(self, *args) + + def read_port(self, *args): + return _sim_services.MSConnect_read_port(self, *args) + + def read_name(self, *args): + return _sim_services.MSConnect_read_name(self, *args) + + def read_command(self, *args): + return _sim_services.MSConnect_read_command(self, *args) + + def write_time(self, *args): + return _sim_services.MSConnect_write_time(self, *args) + + def write_port(self, *args): + return _sim_services.MSConnect_write_port(self, *args) + + def write_name(self, *args): + return _sim_services.MSConnect_write_name(self, *args) + + def write_command(self, *args): + return _sim_services.MSConnect_write_command(self, *args) + __swig_setmethods__["sync_wait_limit"] = _sim_services.MSConnect_sync_wait_limit_set + __swig_getmethods__["sync_wait_limit"] = _sim_services.MSConnect_sync_wait_limit_get + if _newclass: + sync_wait_limit = _swig_property(_sim_services.MSConnect_sync_wait_limit_get, _sim_services.MSConnect_sync_wait_limit_set) +MSConnect_swigregister = _sim_services.MSConnect_swigregister +MSConnect_swigregister(MSConnect) + +class MSSocket(MSConnect): + __swig_setmethods__ = {} + for _s in [MSConnect]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MSSocket, name, value) + __swig_getmethods__ = {} + for _s in [MSConnect]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MSSocket, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MSSocket(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MSSocket + __del__ = lambda self: None + + def set_sync_wait_limit(self, *args): + return _sim_services.MSSocket_set_sync_wait_limit(self, *args) + + def add_sim_args(self, *args): + return _sim_services.MSSocket_add_sim_args(self, *args) + + def process_sim_args(self, *args): + return _sim_services.MSSocket_process_sim_args(self, *args) + + def accept(self, *args): + return _sim_services.MSSocket_accept(self, *args) + + def connect(self, *args): + return _sim_services.MSSocket_connect(self, *args) + + def disconnect(self, *args): + return _sim_services.MSSocket_disconnect(self, *args) + + def read_time(self, *args): + return _sim_services.MSSocket_read_time(self, *args) + + def read_command(self, *args): + return _sim_services.MSSocket_read_command(self, *args) + + def read_port(self, *args): + return _sim_services.MSSocket_read_port(self, *args) + + def read_name(self, *args): + return _sim_services.MSSocket_read_name(self, *args) + + def write_time(self, *args): + return _sim_services.MSSocket_write_time(self, *args) + + def write_command(self, *args): + return _sim_services.MSSocket_write_command(self, *args) + + def write_port(self, *args): + return _sim_services.MSSocket_write_port(self, *args) + + def write_name(self, *args): + return _sim_services.MSSocket_write_name(self, *args) + __swig_setmethods__["tc_dev"] = _sim_services.MSSocket_tc_dev_set + __swig_getmethods__["tc_dev"] = _sim_services.MSSocket_tc_dev_get + if _newclass: + tc_dev = _swig_property(_sim_services.MSSocket_tc_dev_get, _sim_services.MSSocket_tc_dev_set) + __swig_setmethods__["sync_port_tag"] = _sim_services.MSSocket_sync_port_tag_set + __swig_getmethods__["sync_port_tag"] = _sim_services.MSSocket_sync_port_tag_get + if _newclass: + sync_port_tag = _swig_property(_sim_services.MSSocket_sync_port_tag_get, _sim_services.MSSocket_sync_port_tag_set) +MSSocket_swigregister = _sim_services.MSSocket_swigregister +MSSocket_swigregister(MSSocket) + +TSM_SUCCESS = _sim_services.TSM_SUCCESS +TSM_FAIL = _sim_services.TSM_FAIL +TSM_MAX_TIMEOUT_LIMIT = _sim_services.TSM_MAX_TIMEOUT_LIMIT +class TSMDevice(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TSMDevice, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TSMDevice, name) + __repr__ = _swig_repr + __swig_setmethods__["size"] = _sim_services.TSMDevice_size_set + __swig_getmethods__["size"] = _sim_services.TSMDevice_size_get + if _newclass: + size = _swig_property(_sim_services.TSMDevice_size_get, _sim_services.TSMDevice_size_set) + __swig_setmethods__["addr"] = _sim_services.TSMDevice_addr_set + __swig_getmethods__["addr"] = _sim_services.TSMDevice_addr_get + if _newclass: + addr = _swig_property(_sim_services.TSMDevice_addr_get, _sim_services.TSMDevice_addr_set) + __swig_setmethods__["key_file"] = _sim_services.TSMDevice_key_file_set + __swig_getmethods__["key_file"] = _sim_services.TSMDevice_key_file_get + if _newclass: + key_file = _swig_property(_sim_services.TSMDevice_key_file_get, _sim_services.TSMDevice_key_file_set) + __swig_setmethods__["key_id"] = _sim_services.TSMDevice_key_id_set + __swig_getmethods__["key_id"] = _sim_services.TSMDevice_key_id_get + if _newclass: + key_id = _swig_property(_sim_services.TSMDevice_key_id_get, _sim_services.TSMDevice_key_id_set) + __swig_setmethods__["key"] = _sim_services.TSMDevice_key_set + __swig_getmethods__["key"] = _sim_services.TSMDevice_key_get + if _newclass: + key = _swig_property(_sim_services.TSMDevice_key_get, _sim_services.TSMDevice_key_set) + __swig_setmethods__["shmid"] = _sim_services.TSMDevice_shmid_set + __swig_getmethods__["shmid"] = _sim_services.TSMDevice_shmid_get + if _newclass: + shmid = _swig_property(_sim_services.TSMDevice_shmid_get, _sim_services.TSMDevice_shmid_set) + __swig_setmethods__["timeout_limit"] = _sim_services.TSMDevice_timeout_limit_set + __swig_getmethods__["timeout_limit"] = _sim_services.TSMDevice_timeout_limit_get + if _newclass: + timeout_limit = _swig_property(_sim_services.TSMDevice_timeout_limit_get, _sim_services.TSMDevice_timeout_limit_set) + __swig_setmethods__["default_val"] = _sim_services.TSMDevice_default_val_set + __swig_getmethods__["default_val"] = _sim_services.TSMDevice_default_val_get + if _newclass: + default_val = _swig_property(_sim_services.TSMDevice_default_val_get, _sim_services.TSMDevice_default_val_set) + __swig_setmethods__["use_lock"] = _sim_services.TSMDevice_use_lock_set + __swig_getmethods__["use_lock"] = _sim_services.TSMDevice_use_lock_get + if _newclass: + use_lock = _swig_property(_sim_services.TSMDevice_use_lock_get, _sim_services.TSMDevice_use_lock_set) + __swig_setmethods__["rwlattr"] = _sim_services.TSMDevice_rwlattr_set + __swig_getmethods__["rwlattr"] = _sim_services.TSMDevice_rwlattr_get + if _newclass: + rwlattr = _swig_property(_sim_services.TSMDevice_rwlattr_get, _sim_services.TSMDevice_rwlattr_set) + __swig_setmethods__["rwlock_addr"] = _sim_services.TSMDevice_rwlock_addr_set + __swig_getmethods__["rwlock_addr"] = _sim_services.TSMDevice_rwlock_addr_get + if _newclass: + rwlock_addr = _swig_property(_sim_services.TSMDevice_rwlock_addr_get, _sim_services.TSMDevice_rwlock_addr_set) + + def __init__(self): + this = _sim_services.new_TSMDevice() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TSMDevice + __del__ = lambda self: None +TSMDevice_swigregister = _sim_services.TSMDevice_swigregister +TSMDevice_swigregister(TSMDevice) + +MSQ_MAXSIZE = _sim_services.MSQ_MAXSIZE +class MSSharedMemData(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MSSharedMemData, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MSSharedMemData, name) + __repr__ = _swig_repr + __swig_setmethods__["master_pid"] = _sim_services.MSSharedMemData_master_pid_set + __swig_getmethods__["master_pid"] = _sim_services.MSSharedMemData_master_pid_get + if _newclass: + master_pid = _swig_property(_sim_services.MSSharedMemData_master_pid_get, _sim_services.MSSharedMemData_master_pid_set) + __swig_setmethods__["master_time"] = _sim_services.MSSharedMemData_master_time_set + __swig_getmethods__["master_time"] = _sim_services.MSSharedMemData_master_time_get + if _newclass: + master_time = _swig_property(_sim_services.MSSharedMemData_master_time_get, _sim_services.MSSharedMemData_master_time_set) + __swig_setmethods__["master_time_front"] = _sim_services.MSSharedMemData_master_time_front_set + __swig_getmethods__["master_time_front"] = _sim_services.MSSharedMemData_master_time_front_get + if _newclass: + master_time_front = _swig_property(_sim_services.MSSharedMemData_master_time_front_get, _sim_services.MSSharedMemData_master_time_front_set) + __swig_setmethods__["master_time_back"] = _sim_services.MSSharedMemData_master_time_back_set + __swig_getmethods__["master_time_back"] = _sim_services.MSSharedMemData_master_time_back_get + if _newclass: + master_time_back = _swig_property(_sim_services.MSSharedMemData_master_time_back_get, _sim_services.MSSharedMemData_master_time_back_set) + __swig_setmethods__["master_command"] = _sim_services.MSSharedMemData_master_command_set + __swig_getmethods__["master_command"] = _sim_services.MSSharedMemData_master_command_get + if _newclass: + master_command = _swig_property(_sim_services.MSSharedMemData_master_command_get, _sim_services.MSSharedMemData_master_command_set) + __swig_setmethods__["master_command_front"] = _sim_services.MSSharedMemData_master_command_front_set + __swig_getmethods__["master_command_front"] = _sim_services.MSSharedMemData_master_command_front_get + if _newclass: + master_command_front = _swig_property(_sim_services.MSSharedMemData_master_command_front_get, _sim_services.MSSharedMemData_master_command_front_set) + __swig_setmethods__["master_command_back"] = _sim_services.MSSharedMemData_master_command_back_set + __swig_getmethods__["master_command_back"] = _sim_services.MSSharedMemData_master_command_back_get + if _newclass: + master_command_back = _swig_property(_sim_services.MSSharedMemData_master_command_back_get, _sim_services.MSSharedMemData_master_command_back_set) + __swig_setmethods__["slave_command"] = _sim_services.MSSharedMemData_slave_command_set + __swig_getmethods__["slave_command"] = _sim_services.MSSharedMemData_slave_command_get + if _newclass: + slave_command = _swig_property(_sim_services.MSSharedMemData_slave_command_get, _sim_services.MSSharedMemData_slave_command_set) + __swig_setmethods__["slave_command_front"] = _sim_services.MSSharedMemData_slave_command_front_set + __swig_getmethods__["slave_command_front"] = _sim_services.MSSharedMemData_slave_command_front_get + if _newclass: + slave_command_front = _swig_property(_sim_services.MSSharedMemData_slave_command_front_get, _sim_services.MSSharedMemData_slave_command_front_set) + __swig_setmethods__["slave_command_back"] = _sim_services.MSSharedMemData_slave_command_back_set + __swig_getmethods__["slave_command_back"] = _sim_services.MSSharedMemData_slave_command_back_get + if _newclass: + slave_command_back = _swig_property(_sim_services.MSSharedMemData_slave_command_back_get, _sim_services.MSSharedMemData_slave_command_back_set) + __swig_setmethods__["slave_port"] = _sim_services.MSSharedMemData_slave_port_set + __swig_getmethods__["slave_port"] = _sim_services.MSSharedMemData_slave_port_get + if _newclass: + slave_port = _swig_property(_sim_services.MSSharedMemData_slave_port_get, _sim_services.MSSharedMemData_slave_port_set) + __swig_setmethods__["chkpnt_name"] = _sim_services.MSSharedMemData_chkpnt_name_set + __swig_getmethods__["chkpnt_name"] = _sim_services.MSSharedMemData_chkpnt_name_get + if _newclass: + chkpnt_name = _swig_property(_sim_services.MSSharedMemData_chkpnt_name_get, _sim_services.MSSharedMemData_chkpnt_name_set) + + def __init__(self): + this = _sim_services.new_MSSharedMemData() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MSSharedMemData + __del__ = lambda self: None +MSSharedMemData_swigregister = _sim_services.MSSharedMemData_swigregister +MSSharedMemData_swigregister(MSSharedMemData) + +class MSSharedMem(MSConnect): + __swig_setmethods__ = {} + for _s in [MSConnect]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MSSharedMem, name, value) + __swig_getmethods__ = {} + for _s in [MSConnect]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MSSharedMem, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MSSharedMem(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MSSharedMem + __del__ = lambda self: None + + def set_sync_wait_limit(self, *args): + return _sim_services.MSSharedMem_set_sync_wait_limit(self, *args) + + def add_sim_args(self, *args): + return _sim_services.MSSharedMem_add_sim_args(self, *args) + + def process_sim_args(self, *args): + return _sim_services.MSSharedMem_process_sim_args(self, *args) + + def accept(self, *args): + return _sim_services.MSSharedMem_accept(self, *args) + + def connect(self, *args): + return _sim_services.MSSharedMem_connect(self, *args) + + def disconnect(self, *args): + return _sim_services.MSSharedMem_disconnect(self, *args) + + def read_time(self, *args): + return _sim_services.MSSharedMem_read_time(self, *args) + + def read_command(self, *args): + return _sim_services.MSSharedMem_read_command(self, *args) + + def read_port(self, *args): + return _sim_services.MSSharedMem_read_port(self, *args) + + def read_name(self, *args): + return _sim_services.MSSharedMem_read_name(self, *args) + + def write_time(self, *args): + return _sim_services.MSSharedMem_write_time(self, *args) + + def write_command(self, *args): + return _sim_services.MSSharedMem_write_command(self, *args) + + def write_port(self, *args): + return _sim_services.MSSharedMem_write_port(self, *args) + + def write_name(self, *args): + return _sim_services.MSSharedMem_write_name(self, *args) + + def read_wait(self, *args): + return _sim_services.MSSharedMem_read_wait(self, *args) + __swig_setmethods__["tsm_dev"] = _sim_services.MSSharedMem_tsm_dev_set + __swig_getmethods__["tsm_dev"] = _sim_services.MSSharedMem_tsm_dev_get + if _newclass: + tsm_dev = _swig_property(_sim_services.MSSharedMem_tsm_dev_get, _sim_services.MSSharedMem_tsm_dev_set) + __swig_setmethods__["shm_addr"] = _sim_services.MSSharedMem_shm_addr_set + __swig_getmethods__["shm_addr"] = _sim_services.MSSharedMem_shm_addr_get + if _newclass: + shm_addr = _swig_property(_sim_services.MSSharedMem_shm_addr_get, _sim_services.MSSharedMem_shm_addr_set) +MSSharedMem_swigregister = _sim_services.MSSharedMem_swigregister +MSSharedMem_swigregister(MSSharedMem) + +TRICK_SSH = _sim_services.TRICK_SSH +TRICK_RSH = _sim_services.TRICK_RSH +TRICK_USER_REMOTE_SH = _sim_services.TRICK_USER_REMOTE_SH +class slaveVector(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, slaveVector, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, slaveVector, name) + __repr__ = _swig_repr + + def iterator(self, *args): + return _sim_services.slaveVector_iterator(self, *args) + def __iter__(self): + return self.iterator() + + def __nonzero__(self, *args): + return _sim_services.slaveVector___nonzero__(self, *args) + + def __bool__(self, *args): + return _sim_services.slaveVector___bool__(self, *args) + + def __len__(self, *args): + return _sim_services.slaveVector___len__(self, *args) + + def __getslice__(self, *args): + return _sim_services.slaveVector___getslice__(self, *args) + + def __setslice__(self, *args): + return _sim_services.slaveVector___setslice__(self, *args) + + def __delslice__(self, *args): + return _sim_services.slaveVector___delslice__(self, *args) + + def __delitem__(self, *args): + return _sim_services.slaveVector___delitem__(self, *args) + + def __getitem__(self, *args): + return _sim_services.slaveVector___getitem__(self, *args) + + def __setitem__(self, *args): + return _sim_services.slaveVector___setitem__(self, *args) + + def pop(self, *args): + return _sim_services.slaveVector_pop(self, *args) + + def append(self, *args): + return _sim_services.slaveVector_append(self, *args) + + def empty(self, *args): + return _sim_services.slaveVector_empty(self, *args) + + def size(self, *args): + return _sim_services.slaveVector_size(self, *args) + + def swap(self, *args): + return _sim_services.slaveVector_swap(self, *args) + + def begin(self, *args): + return _sim_services.slaveVector_begin(self, *args) + + def end(self, *args): + return _sim_services.slaveVector_end(self, *args) + + def rbegin(self, *args): + return _sim_services.slaveVector_rbegin(self, *args) + + def rend(self, *args): + return _sim_services.slaveVector_rend(self, *args) + + def clear(self, *args): + return _sim_services.slaveVector_clear(self, *args) + + def get_allocator(self, *args): + return _sim_services.slaveVector_get_allocator(self, *args) + + def pop_back(self, *args): + return _sim_services.slaveVector_pop_back(self, *args) + + def erase(self, *args): + return _sim_services.slaveVector_erase(self, *args) + + def __init__(self, *args): + this = _sim_services.new_slaveVector(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def push_back(self, *args): + return _sim_services.slaveVector_push_back(self, *args) + + def front(self, *args): + return _sim_services.slaveVector_front(self, *args) + + def back(self, *args): + return _sim_services.slaveVector_back(self, *args) + + def assign(self, *args): + return _sim_services.slaveVector_assign(self, *args) + + def resize(self, *args): + return _sim_services.slaveVector_resize(self, *args) + + def insert(self, *args): + return _sim_services.slaveVector_insert(self, *args) + + def reserve(self, *args): + return _sim_services.slaveVector_reserve(self, *args) + + def capacity(self, *args): + return _sim_services.slaveVector_capacity(self, *args) + __swig_destroy__ = _sim_services.delete_slaveVector + __del__ = lambda self: None +slaveVector_swigregister = _sim_services.slaveVector_swigregister +slaveVector_swigregister(slaveVector) + +class SlaveInfo(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SlaveInfo, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SlaveInfo, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_SlaveInfo(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["enabled"] = _sim_services.SlaveInfo_enabled_set + __swig_getmethods__["enabled"] = _sim_services.SlaveInfo_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.SlaveInfo_enabled_get, _sim_services.SlaveInfo_enabled_set) + __swig_setmethods__["activated"] = _sim_services.SlaveInfo_activated_set + __swig_getmethods__["activated"] = _sim_services.SlaveInfo_activated_get + if _newclass: + activated = _swig_property(_sim_services.SlaveInfo_activated_get, _sim_services.SlaveInfo_activated_set) + __swig_setmethods__["slave_type"] = _sim_services.SlaveInfo_slave_type_set + __swig_getmethods__["slave_type"] = _sim_services.SlaveInfo_slave_type_get + if _newclass: + slave_type = _swig_property(_sim_services.SlaveInfo_slave_type_get, _sim_services.SlaveInfo_slave_type_set) + __swig_setmethods__["remote_shell"] = _sim_services.SlaveInfo_remote_shell_set + __swig_getmethods__["remote_shell"] = _sim_services.SlaveInfo_remote_shell_get + if _newclass: + remote_shell = _swig_property(_sim_services.SlaveInfo_remote_shell_get, _sim_services.SlaveInfo_remote_shell_set) + __swig_setmethods__["user_remote_shell"] = _sim_services.SlaveInfo_user_remote_shell_set + __swig_getmethods__["user_remote_shell"] = _sim_services.SlaveInfo_user_remote_shell_get + if _newclass: + user_remote_shell = _swig_property(_sim_services.SlaveInfo_user_remote_shell_get, _sim_services.SlaveInfo_user_remote_shell_set) + __swig_setmethods__["remote_shell_args"] = _sim_services.SlaveInfo_remote_shell_args_set + __swig_getmethods__["remote_shell_args"] = _sim_services.SlaveInfo_remote_shell_args_get + if _newclass: + remote_shell_args = _swig_property(_sim_services.SlaveInfo_remote_shell_args_get, _sim_services.SlaveInfo_remote_shell_args_set) + __swig_setmethods__["machine_name"] = _sim_services.SlaveInfo_machine_name_set + __swig_getmethods__["machine_name"] = _sim_services.SlaveInfo_machine_name_get + if _newclass: + machine_name = _swig_property(_sim_services.SlaveInfo_machine_name_get, _sim_services.SlaveInfo_machine_name_set) + __swig_setmethods__["machine_display"] = _sim_services.SlaveInfo_machine_display_set + __swig_getmethods__["machine_display"] = _sim_services.SlaveInfo_machine_display_get + if _newclass: + machine_display = _swig_property(_sim_services.SlaveInfo_machine_display_get, _sim_services.SlaveInfo_machine_display_set) + __swig_setmethods__["sim_path"] = _sim_services.SlaveInfo_sim_path_set + __swig_getmethods__["sim_path"] = _sim_services.SlaveInfo_sim_path_get + if _newclass: + sim_path = _swig_property(_sim_services.SlaveInfo_sim_path_get, _sim_services.SlaveInfo_sim_path_set) + __swig_setmethods__["S_main_name"] = _sim_services.SlaveInfo_S_main_name_set + __swig_getmethods__["S_main_name"] = _sim_services.SlaveInfo_S_main_name_get + if _newclass: + S_main_name = _swig_property(_sim_services.SlaveInfo_S_main_name_get, _sim_services.SlaveInfo_S_main_name_set) + __swig_setmethods__["chkpnt_dump_auto"] = _sim_services.SlaveInfo_chkpnt_dump_auto_set + __swig_getmethods__["chkpnt_dump_auto"] = _sim_services.SlaveInfo_chkpnt_dump_auto_get + if _newclass: + chkpnt_dump_auto = _swig_property(_sim_services.SlaveInfo_chkpnt_dump_auto_get, _sim_services.SlaveInfo_chkpnt_dump_auto_set) + __swig_setmethods__["chkpnt_load_auto"] = _sim_services.SlaveInfo_chkpnt_load_auto_set + __swig_getmethods__["chkpnt_load_auto"] = _sim_services.SlaveInfo_chkpnt_load_auto_get + if _newclass: + chkpnt_load_auto = _swig_property(_sim_services.SlaveInfo_chkpnt_load_auto_get, _sim_services.SlaveInfo_chkpnt_load_auto_set) + __swig_setmethods__["chkpnt_name"] = _sim_services.SlaveInfo_chkpnt_name_set + __swig_getmethods__["chkpnt_name"] = _sim_services.SlaveInfo_chkpnt_name_get + if _newclass: + chkpnt_name = _swig_property(_sim_services.SlaveInfo_chkpnt_name_get, _sim_services.SlaveInfo_chkpnt_name_set) + __swig_setmethods__["run_input_file"] = _sim_services.SlaveInfo_run_input_file_set + __swig_getmethods__["run_input_file"] = _sim_services.SlaveInfo_run_input_file_get + if _newclass: + run_input_file = _swig_property(_sim_services.SlaveInfo_run_input_file_get, _sim_services.SlaveInfo_run_input_file_set) + __swig_setmethods__["other_args"] = _sim_services.SlaveInfo_other_args_set + __swig_getmethods__["other_args"] = _sim_services.SlaveInfo_other_args_get + if _newclass: + other_args = _swig_property(_sim_services.SlaveInfo_other_args_get, _sim_services.SlaveInfo_other_args_set) + __swig_setmethods__["sync_error_terminate"] = _sim_services.SlaveInfo_sync_error_terminate_set + __swig_getmethods__["sync_error_terminate"] = _sim_services.SlaveInfo_sync_error_terminate_get + if _newclass: + sync_error_terminate = _swig_property(_sim_services.SlaveInfo_sync_error_terminate_get, _sim_services.SlaveInfo_sync_error_terminate_set) + __swig_setmethods__["sync_wait_limit"] = _sim_services.SlaveInfo_sync_wait_limit_set + __swig_getmethods__["sync_wait_limit"] = _sim_services.SlaveInfo_sync_wait_limit_get + if _newclass: + sync_wait_limit = _swig_property(_sim_services.SlaveInfo_sync_wait_limit_get, _sim_services.SlaveInfo_sync_wait_limit_set) + __swig_setmethods__["reconnect_wait_limit"] = _sim_services.SlaveInfo_reconnect_wait_limit_set + __swig_getmethods__["reconnect_wait_limit"] = _sim_services.SlaveInfo_reconnect_wait_limit_get + if _newclass: + reconnect_wait_limit = _swig_property(_sim_services.SlaveInfo_reconnect_wait_limit_get, _sim_services.SlaveInfo_reconnect_wait_limit_set) + __swig_setmethods__["reconnect_count"] = _sim_services.SlaveInfo_reconnect_count_set + __swig_getmethods__["reconnect_count"] = _sim_services.SlaveInfo_reconnect_count_get + if _newclass: + reconnect_count = _swig_property(_sim_services.SlaveInfo_reconnect_count_get, _sim_services.SlaveInfo_reconnect_count_set) + __swig_setmethods__["connection"] = _sim_services.SlaveInfo_connection_set + __swig_getmethods__["connection"] = _sim_services.SlaveInfo_connection_get + if _newclass: + connection = _swig_property(_sim_services.SlaveInfo_connection_get, _sim_services.SlaveInfo_connection_set) + + def set_connection_type(self, *args): + return _sim_services.SlaveInfo_set_connection_type(self, *args) + + def start(self, *args): + return _sim_services.SlaveInfo_start(self, *args) + + def read_slave_status(self, *args): + return _sim_services.SlaveInfo_read_slave_status(self, *args) + + def write_master_status(self, *args): + return _sim_services.SlaveInfo_write_master_status(self, *args) + + def write_master_chkpnt_name(self, *args): + return _sim_services.SlaveInfo_write_master_chkpnt_name(self, *args) + __swig_destroy__ = _sim_services.delete_SlaveInfo + __del__ = lambda self: None +SlaveInfo_swigregister = _sim_services.SlaveInfo_swigregister +SlaveInfo_swigregister(SlaveInfo) + +class Master(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Master, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Master, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_Master(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["enabled"] = _sim_services.Master_enabled_set + __swig_getmethods__["enabled"] = _sim_services.Master_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.Master_enabled_get, _sim_services.Master_enabled_set) + __swig_setmethods__["num_slaves"] = _sim_services.Master_num_slaves_set + __swig_getmethods__["num_slaves"] = _sim_services.Master_num_slaves_get + if _newclass: + num_slaves = _swig_property(_sim_services.Master_num_slaves_get, _sim_services.Master_num_slaves_set) + __swig_setmethods__["slaves"] = _sim_services.Master_slaves_set + __swig_getmethods__["slaves"] = _sim_services.Master_slaves_get + if _newclass: + slaves = _swig_property(_sim_services.Master_slaves_get, _sim_services.Master_slaves_set) + + def enable(self, *args): + return _sim_services.Master_enable(self, *args) + + def disable(self, *args): + return _sim_services.Master_disable(self, *args) + + def add_slave(self, *args): + return _sim_services.Master_add_slave(self, *args) + + def process_sim_args(self, *args): + return _sim_services.Master_process_sim_args(self, *args) + + def init(self, *args): + return _sim_services.Master_init(self, *args) + + def end_of_frame_status_from_slave(self, *args): + return _sim_services.Master_end_of_frame_status_from_slave(self, *args) + + def end_of_frame_status_to_slave(self, *args): + return _sim_services.Master_end_of_frame_status_to_slave(self, *args) + + def freeze_init(self, *args): + return _sim_services.Master_freeze_init(self, *args) + + def freeze(self, *args): + return _sim_services.Master_freeze(self, *args) + + def checkpoint(self, *args): + return _sim_services.Master_checkpoint(self, *args) + + def preload_checkpoint(self, *args): + return _sim_services.Master_preload_checkpoint(self, *args) + + def unfreeze(self, *args): + return _sim_services.Master_unfreeze(self, *args) + + def shutdown(self, *args): + return _sim_services.Master_shutdown(self, *args) + __swig_destroy__ = _sim_services.delete_Master + __del__ = lambda self: None +Master_swigregister = _sim_services.Master_swigregister +Master_swigregister(Master) + +class MonteCarloVariable(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariable, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariable, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + Undefined = _sim_services.MonteCarloVariable_Undefined + Calculated = _sim_services.MonteCarloVariable_Calculated + Constant = _sim_services.MonteCarloVariable_Constant + Execute = _sim_services.MonteCarloVariable_Execute + Prescribed = _sim_services.MonteCarloVariable_Prescribed + Random = _sim_services.MonteCarloVariable_Random + __swig_setmethods__["units"] = _sim_services.MonteCarloVariable_units_set + __swig_getmethods__["units"] = _sim_services.MonteCarloVariable_units_get + if _newclass: + units = _swig_property(_sim_services.MonteCarloVariable_units_get, _sim_services.MonteCarloVariable_units_set) + __swig_setmethods__["include_in_summary"] = _sim_services.MonteCarloVariable_include_in_summary_set + __swig_getmethods__["include_in_summary"] = _sim_services.MonteCarloVariable_include_in_summary_get + if _newclass: + include_in_summary = _swig_property(_sim_services.MonteCarloVariable_include_in_summary_get, _sim_services.MonteCarloVariable_include_in_summary_set) + __swig_destroy__ = _sim_services.delete_MonteCarloVariable + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariable_generate_assignment(self, *args) + + def shutdown(self, *args): + return _sim_services.MonteCarloVariable_shutdown(self, *args) + + def get_command(self, *args): + return _sim_services.MonteCarloVariable_get_command(self, *args) + + def get_variable_name(self, *args): + return _sim_services.MonteCarloVariable_get_variable_name(self, *args) + + def get_assignment(self, *args): + return _sim_services.MonteCarloVariable_get_assignment(self, *args) + + def get_type(self, *args): + return _sim_services.MonteCarloVariable_get_type(self, *args) + + def get_type_str(self, *args): + return _sim_services.MonteCarloVariable_get_type_str(self, *args) + + def get_seed(self, *args): + return _sim_services.MonteCarloVariable_get_seed(self, *args) + + def summarize_variable(self, *args): + return _sim_services.MonteCarloVariable_summarize_variable(self, *args) +MonteCarloVariable_swigregister = _sim_services.MonteCarloVariable_swigregister +MonteCarloVariable_swigregister(MonteCarloVariable) + +class MonteCarloVariableFile(MonteCarloVariable): + __swig_setmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableFile, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableFile, name) + __repr__ = _swig_repr + __swig_setmethods__["max_skip"] = _sim_services.MonteCarloVariableFile_max_skip_set + __swig_getmethods__["max_skip"] = _sim_services.MonteCarloVariableFile_max_skip_get + if _newclass: + max_skip = _swig_property(_sim_services.MonteCarloVariableFile_max_skip_get, _sim_services.MonteCarloVariableFile_max_skip_set) + __swig_setmethods__["is_dependent"] = _sim_services.MonteCarloVariableFile_is_dependent_set + __swig_getmethods__["is_dependent"] = _sim_services.MonteCarloVariableFile_is_dependent_get + if _newclass: + is_dependent = _swig_property(_sim_services.MonteCarloVariableFile_is_dependent_get, _sim_services.MonteCarloVariableFile_is_dependent_set) + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableFile(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableFile + __del__ = lambda self: None + + def initialize_file(self, *args): + return _sim_services.MonteCarloVariableFile_initialize_file(self, *args) + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariableFile_generate_assignment(self, *args) + + def summarize_variable(self, *args): + return _sim_services.MonteCarloVariableFile_summarize_variable(self, *args) + + def register_dependent(self, *args): + return _sim_services.MonteCarloVariableFile_register_dependent(self, *args) + + def shutdown(self, *args): + return _sim_services.MonteCarloVariableFile_shutdown(self, *args) + + def has_dependents(self, *args): + return _sim_services.MonteCarloVariableFile_has_dependents(self, *args) + + def get_column_number(self, *args): + return _sim_services.MonteCarloVariableFile_get_column_number(self, *args) + + def get_first_column_number(self, *args): + return _sim_services.MonteCarloVariableFile_get_first_column_number(self, *args) + + def get_filename(self, *args): + return _sim_services.MonteCarloVariableFile_get_filename(self, *args) + + def get_dependents(self, *args): + return _sim_services.MonteCarloVariableFile_get_dependents(self, *args) +MonteCarloVariableFile_swigregister = _sim_services.MonteCarloVariableFile_swigregister +MonteCarloVariableFile_swigregister(MonteCarloVariableFile) + +class MonteCarloPythonLineExec(MonteCarloVariable): + __swig_setmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloPythonLineExec, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloPythonLineExec, name) + __repr__ = _swig_repr + __swig_setmethods__["instruction_set"] = _sim_services.MonteCarloPythonLineExec_instruction_set_set + __swig_getmethods__["instruction_set"] = _sim_services.MonteCarloPythonLineExec_instruction_set_get + if _newclass: + instruction_set = _swig_property(_sim_services.MonteCarloPythonLineExec_instruction_set_get, _sim_services.MonteCarloPythonLineExec_instruction_set_set) + + def __init__(self, *args): + this = _sim_services.new_MonteCarloPythonLineExec(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloPythonLineExec + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloPythonLineExec_generate_assignment(self, *args) +MonteCarloPythonLineExec_swigregister = _sim_services.MonteCarloPythonLineExec_swigregister +MonteCarloPythonLineExec_swigregister(MonteCarloPythonLineExec) + +class MonteCarloPythonFileExec(MonteCarloVariable): + __swig_setmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloPythonFileExec, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloPythonFileExec, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteCarloPythonFileExec(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloPythonFileExec + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloPythonFileExec_generate_assignment(self, *args) +MonteCarloPythonFileExec_swigregister = _sim_services.MonteCarloPythonFileExec_swigregister +MonteCarloPythonFileExec_swigregister(MonteCarloPythonFileExec) + +class MonteCarloVariableRandom(MonteCarloVariable): + __swig_setmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandom, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandom, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandom + __del__ = lambda self: None + + def get_seed(self, *args): + return _sim_services.MonteCarloVariableRandom_get_seed(self, *args) +MonteCarloVariableRandom_swigregister = _sim_services.MonteCarloVariableRandom_swigregister +MonteCarloVariableRandom_swigregister(MonteCarloVariableRandom) + +class MonteCarloVariableFixed(MonteCarloVariable): + __swig_setmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableFixed, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableFixed, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableFixed(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableFixed + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariableFixed_generate_assignment(self, *args) +MonteCarloVariableFixed_swigregister = _sim_services.MonteCarloVariableFixed_swigregister +MonteCarloVariableFixed_swigregister(MonteCarloVariableFixed) + +MSG_NORMAL = _sim_services.MSG_NORMAL +MSG_INFO = _sim_services.MSG_INFO +MSG_WARNING = _sim_services.MSG_WARNING +MSG_ERROR = _sim_services.MSG_ERROR +MSG_DEBUG = _sim_services.MSG_DEBUG +MSG_PLAYBACK = _sim_services.MSG_PLAYBACK + +def message_publish(*args): + return _sim_services.message_publish(*args) +message_publish = _sim_services.message_publish + +def message_publish_standalone(*args): + return _sim_services.message_publish_standalone(*args) +message_publish_standalone = _sim_services.message_publish_standalone + +def send_hs(*args): + return _sim_services.send_hs(*args) +send_hs = _sim_services.send_hs +class MonteCarloVariableSemiFixed(MonteCarloVariable): + __swig_setmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableSemiFixed, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariable]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableSemiFixed, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableSemiFixed(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableSemiFixed + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariableSemiFixed_generate_assignment(self, *args) +MonteCarloVariableSemiFixed_swigregister = _sim_services.MonteCarloVariableSemiFixed_swigregister +MonteCarloVariableSemiFixed_swigregister(MonteCarloVariableSemiFixed) + +class MonteCarloMaster(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloMaster, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloMaster, name) + __repr__ = _swig_repr + __swig_setmethods__["active"] = _sim_services.MonteCarloMaster_active_set + __swig_getmethods__["active"] = _sim_services.MonteCarloMaster_active_get + if _newclass: + active = _swig_property(_sim_services.MonteCarloMaster_active_get, _sim_services.MonteCarloMaster_active_set) + __swig_setmethods__["generate_dispersions"] = _sim_services.MonteCarloMaster_generate_dispersions_set + __swig_getmethods__["generate_dispersions"] = _sim_services.MonteCarloMaster_generate_dispersions_get + if _newclass: + generate_dispersions = _swig_property(_sim_services.MonteCarloMaster_generate_dispersions_get, _sim_services.MonteCarloMaster_generate_dispersions_set) + __swig_setmethods__["run_name"] = _sim_services.MonteCarloMaster_run_name_set + __swig_getmethods__["run_name"] = _sim_services.MonteCarloMaster_run_name_get + if _newclass: + run_name = _swig_property(_sim_services.MonteCarloMaster_run_name_get, _sim_services.MonteCarloMaster_run_name_set) + __swig_setmethods__["monte_dir"] = _sim_services.MonteCarloMaster_monte_dir_set + __swig_getmethods__["monte_dir"] = _sim_services.MonteCarloMaster_monte_dir_get + if _newclass: + monte_dir = _swig_property(_sim_services.MonteCarloMaster_monte_dir_get, _sim_services.MonteCarloMaster_monte_dir_set) + __swig_setmethods__["input_file_name"] = _sim_services.MonteCarloMaster_input_file_name_set + __swig_getmethods__["input_file_name"] = _sim_services.MonteCarloMaster_input_file_name_get + if _newclass: + input_file_name = _swig_property(_sim_services.MonteCarloMaster_input_file_name_get, _sim_services.MonteCarloMaster_input_file_name_set) + __swig_setmethods__["generate_meta_data"] = _sim_services.MonteCarloMaster_generate_meta_data_set + __swig_getmethods__["generate_meta_data"] = _sim_services.MonteCarloMaster_generate_meta_data_get + if _newclass: + generate_meta_data = _swig_property(_sim_services.MonteCarloMaster_generate_meta_data_get, _sim_services.MonteCarloMaster_generate_meta_data_set) + __swig_setmethods__["generate_summary"] = _sim_services.MonteCarloMaster_generate_summary_set + __swig_getmethods__["generate_summary"] = _sim_services.MonteCarloMaster_generate_summary_get + if _newclass: + generate_summary = _swig_property(_sim_services.MonteCarloMaster_generate_summary_get, _sim_services.MonteCarloMaster_generate_summary_set) + __swig_setmethods__["minimum_padding"] = _sim_services.MonteCarloMaster_minimum_padding_set + __swig_getmethods__["minimum_padding"] = _sim_services.MonteCarloMaster_minimum_padding_get + if _newclass: + minimum_padding = _swig_property(_sim_services.MonteCarloMaster_minimum_padding_get, _sim_services.MonteCarloMaster_minimum_padding_set) + __swig_setmethods__["monte_run_number"] = _sim_services.MonteCarloMaster_monte_run_number_set + __swig_getmethods__["monte_run_number"] = _sim_services.MonteCarloMaster_monte_run_number_get + if _newclass: + monte_run_number = _swig_property(_sim_services.MonteCarloMaster_monte_run_number_get, _sim_services.MonteCarloMaster_monte_run_number_set) + + def __init__(self, *args): + this = _sim_services.new_MonteCarloMaster(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloMaster + __del__ = lambda self: None + + def activate(self, *args): + return _sim_services.MonteCarloMaster_activate(self, *args) + + def prepare_input_files(self, *args): + return _sim_services.MonteCarloMaster_prepare_input_files(self, *args) + + def add_variable(self, *args): + return _sim_services.MonteCarloMaster_add_variable(self, *args) + + def find_variable(self, *args): + return _sim_services.MonteCarloMaster_find_variable(self, *args) + + def remove_variable(self, *args): + return _sim_services.MonteCarloMaster_remove_variable(self, *args) + + def set_num_runs(self, *args): + return _sim_services.MonteCarloMaster_set_num_runs(self, *args) + + def execute(self, *args): + return _sim_services.MonteCarloMaster_execute(self, *args) + + def collate_meta_data(self, *args): + return _sim_services.MonteCarloMaster_collate_meta_data(self, *args) +MonteCarloMaster_swigregister = _sim_services.MonteCarloMaster_swigregister +MonteCarloMaster_swigregister(MonteCarloMaster) + +class MonteCarloVariableRandomUniform(MonteCarloVariableRandom): + __swig_setmethods__ = {} + for _s in [MonteCarloVariableRandom]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomUniform, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariableRandom]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomUniform, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableRandomUniform(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomUniform + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariableRandomUniform_generate_assignment(self, *args) + + def summarize_variable(self, *args): + return _sim_services.MonteCarloVariableRandomUniform_summarize_variable(self, *args) +MonteCarloVariableRandomUniform_swigregister = _sim_services.MonteCarloVariableRandomUniform_swigregister +MonteCarloVariableRandomUniform_swigregister(MonteCarloVariableRandomUniform) + +class MonteCarloVariableRandomUniformInt(MonteCarloVariableRandom): + __swig_setmethods__ = {} + for _s in [MonteCarloVariableRandom]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomUniformInt, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariableRandom]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomUniformInt, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableRandomUniformInt(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomUniformInt + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariableRandomUniformInt_generate_assignment(self, *args) + + def summarize_variable(self, *args): + return _sim_services.MonteCarloVariableRandomUniformInt_summarize_variable(self, *args) +MonteCarloVariableRandomUniformInt_swigregister = _sim_services.MonteCarloVariableRandomUniformInt_swigregister +MonteCarloVariableRandomUniformInt_swigregister(MonteCarloVariableRandomUniformInt) + +class MonteCarloVariableRandomStringSet(MonteCarloVariableRandomUniform): + __swig_setmethods__ = {} + for _s in [MonteCarloVariableRandomUniform]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomStringSet, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariableRandomUniform]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomStringSet, name) + __repr__ = _swig_repr + __swig_setmethods__["values"] = _sim_services.MonteCarloVariableRandomStringSet_values_set + __swig_getmethods__["values"] = _sim_services.MonteCarloVariableRandomStringSet_values_get + if _newclass: + values = _swig_property(_sim_services.MonteCarloVariableRandomStringSet_values_get, _sim_services.MonteCarloVariableRandomStringSet_values_set) + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableRandomStringSet(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomStringSet + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariableRandomStringSet_generate_assignment(self, *args) + + def summarize_variable(self, *args): + return _sim_services.MonteCarloVariableRandomStringSet_summarize_variable(self, *args) + + def add_string(self, *args): + return _sim_services.MonteCarloVariableRandomStringSet_add_string(self, *args) +MonteCarloVariableRandomStringSet_swigregister = _sim_services.MonteCarloVariableRandomStringSet_swigregister +MonteCarloVariableRandomStringSet_swigregister(MonteCarloVariableRandomStringSet) + +class MonteCarloVariableRandomBool(MonteCarloVariableRandomStringSet): + __swig_setmethods__ = {} + for _s in [MonteCarloVariableRandomStringSet]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomBool, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariableRandomStringSet]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomBool, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableRandomBool(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomBool + __del__ = lambda self: None +MonteCarloVariableRandomBool_swigregister = _sim_services.MonteCarloVariableRandomBool_swigregister +MonteCarloVariableRandomBool_swigregister(MonteCarloVariableRandomBool) + +class MonteCarloVariableRandomNormal(MonteCarloVariableRandom): + __swig_setmethods__ = {} + for _s in [MonteCarloVariableRandom]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomNormal, name, value) + __swig_getmethods__ = {} + for _s in [MonteCarloVariableRandom]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomNormal, name) + __repr__ = _swig_repr + StandardDeviation = _sim_services.MonteCarloVariableRandomNormal_StandardDeviation + Relative = _sim_services.MonteCarloVariableRandomNormal_Relative + Absolute = _sim_services.MonteCarloVariableRandomNormal_Absolute + __swig_setmethods__["max_num_tries"] = _sim_services.MonteCarloVariableRandomNormal_max_num_tries_set + __swig_getmethods__["max_num_tries"] = _sim_services.MonteCarloVariableRandomNormal_max_num_tries_get + if _newclass: + max_num_tries = _swig_property(_sim_services.MonteCarloVariableRandomNormal_max_num_tries_get, _sim_services.MonteCarloVariableRandomNormal_max_num_tries_set) + + def __init__(self, *args): + this = _sim_services.new_MonteCarloVariableRandomNormal(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomNormal + __del__ = lambda self: None + + def generate_assignment(self, *args): + return _sim_services.MonteCarloVariableRandomNormal_generate_assignment(self, *args) + + def summarize_variable(self, *args): + return _sim_services.MonteCarloVariableRandomNormal_summarize_variable(self, *args) + + def truncate(self, *args): + return _sim_services.MonteCarloVariableRandomNormal_truncate(self, *args) + + def truncate_low(self, *args): + return _sim_services.MonteCarloVariableRandomNormal_truncate_low(self, *args) + + def truncate_high(self, *args): + return _sim_services.MonteCarloVariableRandomNormal_truncate_high(self, *args) + + def untruncate(self, *args): + return _sim_services.MonteCarloVariableRandomNormal_untruncate(self, *args) +MonteCarloVariableRandomNormal_swigregister = _sim_services.MonteCarloVariableRandomNormal_swigregister +MonteCarloVariableRandomNormal_swigregister(MonteCarloVariableRandomNormal) + +class Slave(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Slave, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Slave, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_Slave(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_setmethods__["activated"] = _sim_services.Slave_activated_set + __swig_getmethods__["activated"] = _sim_services.Slave_activated_get + if _newclass: + activated = _swig_property(_sim_services.Slave_activated_get, _sim_services.Slave_activated_set) + __swig_setmethods__["enabled"] = _sim_services.Slave_enabled_set + __swig_getmethods__["enabled"] = _sim_services.Slave_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.Slave_enabled_get, _sim_services.Slave_enabled_set) + __swig_setmethods__["reconnected"] = _sim_services.Slave_reconnected_set + __swig_getmethods__["reconnected"] = _sim_services.Slave_reconnected_get + if _newclass: + reconnected = _swig_property(_sim_services.Slave_reconnected_get, _sim_services.Slave_reconnected_set) + __swig_setmethods__["sent_reconnect_cmd"] = _sim_services.Slave_sent_reconnect_cmd_set + __swig_getmethods__["sent_reconnect_cmd"] = _sim_services.Slave_sent_reconnect_cmd_get + if _newclass: + sent_reconnect_cmd = _swig_property(_sim_services.Slave_sent_reconnect_cmd_get, _sim_services.Slave_sent_reconnect_cmd_set) + __swig_setmethods__["msg_published"] = _sim_services.Slave_msg_published_set + __swig_getmethods__["msg_published"] = _sim_services.Slave_msg_published_get + if _newclass: + msg_published = _swig_property(_sim_services.Slave_msg_published_get, _sim_services.Slave_msg_published_set) + __swig_setmethods__["chkpnt_name"] = _sim_services.Slave_chkpnt_name_set + __swig_getmethods__["chkpnt_name"] = _sim_services.Slave_chkpnt_name_get + if _newclass: + chkpnt_name = _swig_property(_sim_services.Slave_chkpnt_name_get, _sim_services.Slave_chkpnt_name_set) + __swig_setmethods__["sync_error_terminate"] = _sim_services.Slave_sync_error_terminate_set + __swig_getmethods__["sync_error_terminate"] = _sim_services.Slave_sync_error_terminate_get + if _newclass: + sync_error_terminate = _swig_property(_sim_services.Slave_sync_error_terminate_get, _sim_services.Slave_sync_error_terminate_set) + __swig_setmethods__["sync_wait_limit"] = _sim_services.Slave_sync_wait_limit_set + __swig_getmethods__["sync_wait_limit"] = _sim_services.Slave_sync_wait_limit_get + if _newclass: + sync_wait_limit = _swig_property(_sim_services.Slave_sync_wait_limit_get, _sim_services.Slave_sync_wait_limit_set) + __swig_setmethods__["connection"] = _sim_services.Slave_connection_set + __swig_getmethods__["connection"] = _sim_services.Slave_connection_get + if _newclass: + connection = _swig_property(_sim_services.Slave_connection_get, _sim_services.Slave_connection_set) + + def set_connection_type(self, *args): + return _sim_services.Slave_set_connection_type(self, *args) + + def process_sim_args(self, *args): + return _sim_services.Slave_process_sim_args(self, *args) + + def init(self, *args): + return _sim_services.Slave_init(self, *args) + + def get_checkpoint_name(self, *args): + return _sim_services.Slave_get_checkpoint_name(self, *args) + + def end_of_frame(self, *args): + return _sim_services.Slave_end_of_frame(self, *args) + + def freeze_init(self, *args): + return _sim_services.Slave_freeze_init(self, *args) + + def freeze(self, *args): + return _sim_services.Slave_freeze(self, *args) + + def unfreeze(self, *args): + return _sim_services.Slave_unfreeze(self, *args) + + def shutdown(self, *args): + return _sim_services.Slave_shutdown(self, *args) + __swig_destroy__ = _sim_services.delete_Slave + __del__ = lambda self: None +Slave_swigregister = _sim_services.Slave_swigregister +Slave_swigregister(Slave) + + +def ms_master_enable(*args): + return _sim_services.ms_master_enable(*args) +ms_master_enable = _sim_services.ms_master_enable + +def ms_master_disable(*args): + return _sim_services.ms_master_disable(*args) +ms_master_disable = _sim_services.ms_master_disable +class CheckPointRestart(Scheduler): + __swig_setmethods__ = {} + for _s in [Scheduler]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, CheckPointRestart, name, value) + __swig_getmethods__ = {} + for _s in [Scheduler]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, CheckPointRestart, name) + __repr__ = _swig_repr + __swig_setmethods__["checkpoint_times"] = _sim_services.CheckPointRestart_checkpoint_times_set + __swig_getmethods__["checkpoint_times"] = _sim_services.CheckPointRestart_checkpoint_times_get + if _newclass: + checkpoint_times = _swig_property(_sim_services.CheckPointRestart_checkpoint_times_get, _sim_services.CheckPointRestart_checkpoint_times_set) + __swig_setmethods__["safestore_period"] = _sim_services.CheckPointRestart_safestore_period_set + __swig_getmethods__["safestore_period"] = _sim_services.CheckPointRestart_safestore_period_get + if _newclass: + safestore_period = _swig_property(_sim_services.CheckPointRestart_safestore_period_get, _sim_services.CheckPointRestart_safestore_period_set) + __swig_setmethods__["safestore_time"] = _sim_services.CheckPointRestart_safestore_time_set + __swig_getmethods__["safestore_time"] = _sim_services.CheckPointRestart_safestore_time_get + if _newclass: + safestore_time = _swig_property(_sim_services.CheckPointRestart_safestore_time_get, _sim_services.CheckPointRestart_safestore_time_set) + __swig_setmethods__["pre_init_checkpoint"] = _sim_services.CheckPointRestart_pre_init_checkpoint_set + __swig_getmethods__["pre_init_checkpoint"] = _sim_services.CheckPointRestart_pre_init_checkpoint_get + if _newclass: + pre_init_checkpoint = _swig_property(_sim_services.CheckPointRestart_pre_init_checkpoint_get, _sim_services.CheckPointRestart_pre_init_checkpoint_set) + __swig_setmethods__["post_init_checkpoint"] = _sim_services.CheckPointRestart_post_init_checkpoint_set + __swig_getmethods__["post_init_checkpoint"] = _sim_services.CheckPointRestart_post_init_checkpoint_get + if _newclass: + post_init_checkpoint = _swig_property(_sim_services.CheckPointRestart_post_init_checkpoint_get, _sim_services.CheckPointRestart_post_init_checkpoint_set) + __swig_setmethods__["end_checkpoint"] = _sim_services.CheckPointRestart_end_checkpoint_set + __swig_getmethods__["end_checkpoint"] = _sim_services.CheckPointRestart_end_checkpoint_get + if _newclass: + end_checkpoint = _swig_property(_sim_services.CheckPointRestart_end_checkpoint_get, _sim_services.CheckPointRestart_end_checkpoint_set) + __swig_setmethods__["safestore_enabled"] = _sim_services.CheckPointRestart_safestore_enabled_set + __swig_getmethods__["safestore_enabled"] = _sim_services.CheckPointRestart_safestore_enabled_get + if _newclass: + safestore_enabled = _swig_property(_sim_services.CheckPointRestart_safestore_enabled_get, _sim_services.CheckPointRestart_safestore_enabled_set) + __swig_setmethods__["output_file"] = _sim_services.CheckPointRestart_output_file_set + __swig_getmethods__["output_file"] = _sim_services.CheckPointRestart_output_file_get + if _newclass: + output_file = _swig_property(_sim_services.CheckPointRestart_output_file_get, _sim_services.CheckPointRestart_output_file_set) + __swig_setmethods__["load_checkpoint_file_name"] = _sim_services.CheckPointRestart_load_checkpoint_file_name_set + __swig_getmethods__["load_checkpoint_file_name"] = _sim_services.CheckPointRestart_load_checkpoint_file_name_get + if _newclass: + load_checkpoint_file_name = _swig_property(_sim_services.CheckPointRestart_load_checkpoint_file_name_get, _sim_services.CheckPointRestart_load_checkpoint_file_name_set) + __swig_setmethods__["cpu_num"] = _sim_services.CheckPointRestart_cpu_num_set + __swig_getmethods__["cpu_num"] = _sim_services.CheckPointRestart_cpu_num_get + if _newclass: + cpu_num = _swig_property(_sim_services.CheckPointRestart_cpu_num_get, _sim_services.CheckPointRestart_cpu_num_set) + + def __init__(self, *args): + this = _sim_services.new_CheckPointRestart(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def set_pre_init_checkpoint(self, *args): + return _sim_services.CheckPointRestart_set_pre_init_checkpoint(self, *args) + + def set_post_init_checkpoint(self, *args): + return _sim_services.CheckPointRestart_set_post_init_checkpoint(self, *args) + + def set_end_checkpoint(self, *args): + return _sim_services.CheckPointRestart_set_end_checkpoint(self, *args) + + def set_safestore_enabled(self, *args): + return _sim_services.CheckPointRestart_set_safestore_enabled(self, *args) + + def get_output_file(self, *args): + return _sim_services.CheckPointRestart_get_output_file(self, *args) + + def get_load_file(self, *args): + return _sim_services.CheckPointRestart_get_load_file(self, *args) + + def set_cpu_num(self, *args): + return _sim_services.CheckPointRestart_set_cpu_num(self, *args) + + def find_write_checkpoint_jobs(self, *args): + return _sim_services.CheckPointRestart_find_write_checkpoint_jobs(self, *args) + + def set_safestore_time(self, *args): + return _sim_services.CheckPointRestart_set_safestore_time(self, *args) + + def checkpoint(self, *args): + return _sim_services.CheckPointRestart_checkpoint(self, *args) + + def write_pre_init_checkpoint(self, *args): + return _sim_services.CheckPointRestart_write_pre_init_checkpoint(self, *args) + + def write_post_init_checkpoint(self, *args): + return _sim_services.CheckPointRestart_write_post_init_checkpoint(self, *args) + + def write_end_checkpoint(self, *args): + return _sim_services.CheckPointRestart_write_end_checkpoint(self, *args) + + def write_checkpoint(self, *args): + return _sim_services.CheckPointRestart_write_checkpoint(self, *args) + + def safestore_checkpoint(self, *args): + return _sim_services.CheckPointRestart_safestore_checkpoint(self, *args) + + def load_checkpoint(self, *args): + return _sim_services.CheckPointRestart_load_checkpoint(self, *args) + + def load_checkpoint_job(self, *args): + return _sim_services.CheckPointRestart_load_checkpoint_job(self, *args) + + def write_s_job_execution(self, *args): + return _sim_services.CheckPointRestart_write_s_job_execution(self, *args) + + def instrument_job_before(self, *args): + return _sim_services.CheckPointRestart_instrument_job_before(self, *args) + + def instrument_job_after(self, *args): + return _sim_services.CheckPointRestart_instrument_job_after(self, *args) + + def instrument_job_remove(self, *args): + return _sim_services.CheckPointRestart_instrument_job_remove(self, *args) + __swig_destroy__ = _sim_services.delete_CheckPointRestart + __del__ = lambda self: None +CheckPointRestart_swigregister = _sim_services.CheckPointRestart_swigregister +CheckPointRestart_swigregister(CheckPointRestart) + + +def checkpoint_pre_init(*args): + return _sim_services.checkpoint_pre_init(*args) +checkpoint_pre_init = _sim_services.checkpoint_pre_init + +def checkpoint_post_init(*args): + return _sim_services.checkpoint_post_init(*args) +checkpoint_post_init = _sim_services.checkpoint_post_init + +def checkpoint_end(*args): + return _sim_services.checkpoint_end(*args) +checkpoint_end = _sim_services.checkpoint_end + +def get_checkpoint_pre_init(*args): + return _sim_services.get_checkpoint_pre_init(*args) +get_checkpoint_pre_init = _sim_services.get_checkpoint_pre_init + +def get_checkpoint_post_init(*args): + return _sim_services.get_checkpoint_post_init(*args) +get_checkpoint_post_init = _sim_services.get_checkpoint_post_init + +def get_checkpoint_end(*args): + return _sim_services.get_checkpoint_end(*args) +get_checkpoint_end = _sim_services.get_checkpoint_end + +def checkpoint_safestore(*args): + return _sim_services.checkpoint_safestore(*args) +checkpoint_safestore = _sim_services.checkpoint_safestore + +def checkpoint_cpu(*args): + return _sim_services.checkpoint_cpu(*args) +checkpoint_cpu = _sim_services.checkpoint_cpu + +def checkpoint_safestore_period(*args): + return _sim_services.checkpoint_safestore_period(*args) +checkpoint_safestore_period = _sim_services.checkpoint_safestore_period + +def checkpoint_get_output_file(*args): + return _sim_services.checkpoint_get_output_file(*args) +checkpoint_get_output_file = _sim_services.checkpoint_get_output_file + +def checkpoint_get_load_file(*args): + return _sim_services.checkpoint_get_load_file(*args) +checkpoint_get_load_file = _sim_services.checkpoint_get_load_file + +def checkpoint(*args): + return _sim_services.checkpoint(*args) +checkpoint = _sim_services.checkpoint + +def checkpoint_objects(*args): + return _sim_services.checkpoint_objects(*args) +checkpoint_objects = _sim_services.checkpoint_objects + +def load_checkpoint(*args): + return _sim_services.load_checkpoint(*args) +load_checkpoint = _sim_services.load_checkpoint + +def load_checkpoint_stls(*args): + return _sim_services.load_checkpoint_stls(*args) +load_checkpoint_stls = _sim_services.load_checkpoint_stls + +def load_checkpoint_job(*args): + return _sim_services.load_checkpoint_job(*args) +load_checkpoint_job = _sim_services.load_checkpoint_job + +def get_address(*args): + return _sim_services.get_address(*args) +get_address = _sim_services.get_address + +def next_attr_name(*args): + return _sim_services.next_attr_name(*args) +next_attr_name = _sim_services.next_attr_name + +def add_collect(*args): + return _sim_services.add_collect(*args) +add_collect = _sim_services.add_collect + +def delete_collect(*args): + return _sim_services.delete_collect(*args) +delete_collect = _sim_services.delete_collect +class AttributesMap(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, AttributesMap, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, AttributesMap, name) + __repr__ = _swig_repr + if _newclass: + attributes_map = staticmethod(_sim_services.AttributesMap_attributes_map) + else: + attributes_map = _sim_services.AttributesMap_attributes_map + + def __init__(self, *args): + this = _sim_services.new_AttributesMap(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_AttributesMap + __del__ = lambda self: None + + def add_attr(self, *args): + return _sim_services.AttributesMap_add_attr(self, *args) + + def get_attr(self, *args): + return _sim_services.AttributesMap_get_attr(self, *args) + + def replace_special_chars(self, *args): + return _sim_services.AttributesMap_replace_special_chars(self, *args) + + def type_remove_dims(self, *args): + return _sim_services.AttributesMap_type_remove_dims(self, *args) + + def print_xml(self, *args): + return _sim_services.AttributesMap_print_xml(self, *args) + + def print_json(self, *args): + return _sim_services.AttributesMap_print_json(self, *args) +AttributesMap_swigregister = _sim_services.AttributesMap_swigregister +AttributesMap_swigregister(AttributesMap) + +def AttributesMap_attributes_map(*args): + return _sim_services.AttributesMap_attributes_map(*args) +AttributesMap_attributes_map = _sim_services.AttributesMap_attributes_map + + +def sie_print_xml(*args): + return _sim_services.sie_print_xml(*args) +sie_print_xml = _sim_services.sie_print_xml + +def sie_class_attr_map_print_xml(*args): + return _sim_services.sie_class_attr_map_print_xml(*args) +sie_class_attr_map_print_xml = _sim_services.sie_class_attr_map_print_xml + +def sie_enum_attr_map_print_xml(*args): + return _sim_services.sie_enum_attr_map_print_xml(*args) +sie_enum_attr_map_print_xml = _sim_services.sie_enum_attr_map_print_xml + +def sie_top_level_objects_print_xml(*args): + return _sim_services.sie_top_level_objects_print_xml(*args) +sie_top_level_objects_print_xml = _sim_services.sie_top_level_objects_print_xml + +def sie_append_runtime_objs(*args): + return _sim_services.sie_append_runtime_objs(*args) +sie_append_runtime_objs = _sim_services.sie_append_runtime_objs + +def sie_get_runtime_sie_dir(*args): + return _sim_services.sie_get_runtime_sie_dir(*args) +sie_get_runtime_sie_dir = _sim_services.sie_get_runtime_sie_dir +class MessageSubscriber(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageSubscriber, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MessageSubscriber, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_setmethods__["enabled"] = _sim_services.MessageSubscriber_enabled_set + __swig_getmethods__["enabled"] = _sim_services.MessageSubscriber_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.MessageSubscriber_enabled_get, _sim_services.MessageSubscriber_enabled_set) + __swig_setmethods__["color"] = _sim_services.MessageSubscriber_color_set + __swig_getmethods__["color"] = _sim_services.MessageSubscriber_color_get + if _newclass: + color = _swig_property(_sim_services.MessageSubscriber_color_get, _sim_services.MessageSubscriber_color_set) + __swig_setmethods__["name"] = _sim_services.MessageSubscriber_name_set + __swig_getmethods__["name"] = _sim_services.MessageSubscriber_name_get + if _newclass: + name = _swig_property(_sim_services.MessageSubscriber_name_get, _sim_services.MessageSubscriber_name_set) + + def set_enabled(self, *args): + return _sim_services.MessageSubscriber_set_enabled(self, *args) + + def set_color(self, *args): + return _sim_services.MessageSubscriber_set_color(self, *args) + __swig_destroy__ = _sim_services.delete_MessageSubscriber + __del__ = lambda self: None + + def init(self, *args): + return _sim_services.MessageSubscriber_init(self, *args) + + def update(self, *args): + return _sim_services.MessageSubscriber_update(self, *args) + + def shutdown(self, *args): + return _sim_services.MessageSubscriber_shutdown(self, *args) +MessageSubscriber_swigregister = _sim_services.MessageSubscriber_swigregister +MessageSubscriber_swigregister(MessageSubscriber) + +class MessageCout(MessageSubscriber): + __swig_setmethods__ = {} + for _s in [MessageSubscriber]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageCout, name, value) + __swig_getmethods__ = {} + for _s in [MessageSubscriber]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageCout, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MessageCout(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def update(self, *args): + return _sim_services.MessageCout_update(self, *args) + __swig_destroy__ = _sim_services.delete_MessageCout + __del__ = lambda self: None +MessageCout_swigregister = _sim_services.MessageCout_swigregister +MessageCout_swigregister(MessageCout) + +class MessageThreadedCout(MessageSubscriber, SysThread): + __swig_setmethods__ = {} + for _s in [MessageSubscriber, SysThread]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageThreadedCout, name, value) + __swig_getmethods__ = {} + for _s in [MessageSubscriber, SysThread]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageThreadedCout, name) + __repr__ = _swig_repr + __swig_setmethods__["max_buffer_items"] = _sim_services.MessageThreadedCout_max_buffer_items_set + __swig_getmethods__["max_buffer_items"] = _sim_services.MessageThreadedCout_max_buffer_items_get + if _newclass: + max_buffer_items = _swig_property(_sim_services.MessageThreadedCout_max_buffer_items_get, _sim_services.MessageThreadedCout_max_buffer_items_set) + __swig_setmethods__["max_buffer_size"] = _sim_services.MessageThreadedCout_max_buffer_size_set + __swig_getmethods__["max_buffer_size"] = _sim_services.MessageThreadedCout_max_buffer_size_get + if _newclass: + max_buffer_size = _swig_property(_sim_services.MessageThreadedCout_max_buffer_size_get, _sim_services.MessageThreadedCout_max_buffer_size_set) + __swig_setmethods__["color_code"] = _sim_services.MessageThreadedCout_color_code_set + __swig_getmethods__["color_code"] = _sim_services.MessageThreadedCout_color_code_get + if _newclass: + color_code = _swig_property(_sim_services.MessageThreadedCout_color_code_get, _sim_services.MessageThreadedCout_color_code_set) + + def __init__(self, *args): + this = _sim_services.new_MessageThreadedCout(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MessageThreadedCout + __del__ = lambda self: None + + def init(self, *args): + return _sim_services.MessageThreadedCout_init(self, *args) + + def update(self, *args): + return _sim_services.MessageThreadedCout_update(self, *args) + + def shutdown(self, *args): + return _sim_services.MessageThreadedCout_shutdown(self, *args) + + def thread_body(self, *args): + return _sim_services.MessageThreadedCout_thread_body(self, *args) + + def dump(self, *args): + return _sim_services.MessageThreadedCout_dump(self, *args) + + def write_pending_messages(self, *args): + return _sim_services.MessageThreadedCout_write_pending_messages(self, *args) +MessageThreadedCout_swigregister = _sim_services.MessageThreadedCout_swigregister +MessageThreadedCout_swigregister(MessageThreadedCout) + +class MessageFile(MessageSubscriber): + __swig_setmethods__ = {} + for _s in [MessageSubscriber]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageFile, name, value) + __swig_getmethods__ = {} + for _s in [MessageSubscriber]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageFile, name) + __repr__ = _swig_repr + __swig_setmethods__["file_name"] = _sim_services.MessageFile_file_name_set + __swig_getmethods__["file_name"] = _sim_services.MessageFile_file_name_get + if _newclass: + file_name = _swig_property(_sim_services.MessageFile_file_name_get, _sim_services.MessageFile_file_name_set) + + def __init__(self, *args): + this = _sim_services.new_MessageFile(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MessageFile + __del__ = lambda self: None + + def update(self, *args): + return _sim_services.MessageFile_update(self, *args) + + def set_file_name(self, *args): + return _sim_services.MessageFile_set_file_name(self, *args) + + def init(self, *args): + return _sim_services.MessageFile_init(self, *args) + + def restart(self, *args): + return _sim_services.MessageFile_restart(self, *args) +MessageFile_swigregister = _sim_services.MessageFile_swigregister +MessageFile_swigregister(MessageFile) + +class MessageHSFile(MessageFile): + __swig_setmethods__ = {} + for _s in [MessageFile]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageHSFile, name, value) + __swig_getmethods__ = {} + for _s in [MessageFile]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageHSFile, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MessageHSFile(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def update(self, *args): + return _sim_services.MessageHSFile_update(self, *args) + __swig_destroy__ = _sim_services.delete_MessageHSFile + __del__ = lambda self: None +MessageHSFile_swigregister = _sim_services.MessageHSFile_swigregister +MessageHSFile_swigregister(MessageHSFile) + +class MessageCustomFile(MessageFile): + __swig_setmethods__ = {} + for _s in [MessageFile]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageCustomFile, name, value) + __swig_getmethods__ = {} + for _s in [MessageFile]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageCustomFile, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MessageCustomFile(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def update(self, *args): + return _sim_services.MessageCustomFile_update(self, *args) + + def get_level(self, *args): + return _sim_services.MessageCustomFile_get_level(self, *args) + + def set_level(self, *args): + return _sim_services.MessageCustomFile_set_level(self, *args) + + def set_name(self, *args): + return _sim_services.MessageCustomFile_set_name(self, *args) + + def set_file_name(self, *args): + return _sim_services.MessageCustomFile_set_file_name(self, *args) + __swig_destroy__ = _sim_services.delete_MessageCustomFile + __del__ = lambda self: None +MessageCustomFile_swigregister = _sim_services.MessageCustomFile_swigregister +MessageCustomFile_swigregister(MessageCustomFile) + +class MessageCustomManager(MessageSubscriber): + __swig_setmethods__ = {} + for _s in [MessageSubscriber]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageCustomManager, name, value) + __swig_getmethods__ = {} + for _s in [MessageSubscriber]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageCustomManager, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MessageCustomManager(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MessageCustomManager + __del__ = lambda self: None + + def open_custom_message_file(self, *args): + return _sim_services.MessageCustomManager_open_custom_message_file(self, *args) + + def update(self, *args): + return _sim_services.MessageCustomManager_update(self, *args) + + def restart(self, *args): + return _sim_services.MessageCustomManager_restart(self, *args) +MessageCustomManager_swigregister = _sim_services.MessageCustomManager_swigregister +MessageCustomManager_swigregister(MessageCustomManager) + +class MessageLCout(MessageSubscriber): + __swig_setmethods__ = {} + for _s in [MessageSubscriber]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageLCout, name, value) + __swig_getmethods__ = {} + for _s in [MessageSubscriber]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageLCout, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MessageLCout(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def update(self, *args): + return _sim_services.MessageLCout_update(self, *args) + __swig_destroy__ = _sim_services.delete_MessageLCout + __del__ = lambda self: None +MessageLCout_swigregister = _sim_services.MessageLCout_swigregister +MessageLCout_swigregister(MessageLCout) + +class MessagePublisher(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MessagePublisher, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MessagePublisher, name) + __repr__ = _swig_repr + __swig_setmethods__["sim_name"] = _sim_services.MessagePublisher_sim_name_set + __swig_getmethods__["sim_name"] = _sim_services.MessagePublisher_sim_name_get + if _newclass: + sim_name = _swig_property(_sim_services.MessagePublisher_sim_name_get, _sim_services.MessagePublisher_sim_name_set) + + def __init__(self, *args): + this = _sim_services.new_MessagePublisher(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MessagePublisher + __del__ = lambda self: None + + def init(self, *args): + return _sim_services.MessagePublisher_init(self, *args) + + def subscribe(self, *args): + return _sim_services.MessagePublisher_subscribe(self, *args) + + def unsubscribe(self, *args): + return _sim_services.MessagePublisher_unsubscribe(self, *args) + + def publish(self, *args): + return _sim_services.MessagePublisher_publish(self, *args) + + def getSubscriber(self, *args): + return _sim_services.MessagePublisher_getSubscriber(self, *args) +MessagePublisher_swigregister = _sim_services.MessagePublisher_swigregister +MessagePublisher_swigregister(MessagePublisher) + +class MessageTCDeviceListenThread(SysThread): + __swig_setmethods__ = {} + for _s in [SysThread]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageTCDeviceListenThread, name, value) + __swig_getmethods__ = {} + for _s in [SysThread]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageTCDeviceListenThread, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MessageTCDeviceListenThread(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MessageTCDeviceListenThread + __del__ = lambda self: None + + def get_port(self, *args): + return _sim_services.MessageTCDeviceListenThread_get_port(self, *args) + + def init_listen_device(self, *args): + return _sim_services.MessageTCDeviceListenThread_init_listen_device(self, *args) + + def restart(self, *args): + return _sim_services.MessageTCDeviceListenThread_restart(self, *args) + + def thread_body(self, *args): + return _sim_services.MessageTCDeviceListenThread_thread_body(self, *args) + + def dump(self, *args): + return _sim_services.MessageTCDeviceListenThread_dump(self, *args) +MessageTCDeviceListenThread_swigregister = _sim_services.MessageTCDeviceListenThread_swigregister +MessageTCDeviceListenThread_swigregister(MessageTCDeviceListenThread) + +class MessageTCDevice(MessageSubscriber): + __swig_setmethods__ = {} + for _s in [MessageSubscriber]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MessageTCDevice, name, value) + __swig_getmethods__ = {} + for _s in [MessageSubscriber]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MessageTCDevice, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MessageTCDevice(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MessageTCDevice + __del__ = lambda self: None + + def get_listen_thread(self, *args): + return _sim_services.MessageTCDevice_get_listen_thread(self, *args) + + def add_connection(self, *args): + return _sim_services.MessageTCDevice_add_connection(self, *args) + + def update(self, *args): + return _sim_services.MessageTCDevice_update(self, *args) + + def default_data(self, *args): + return _sim_services.MessageTCDevice_default_data(self, *args) + + def init(self, *args): + return _sim_services.MessageTCDevice_init(self, *args) + + def restart(self, *args): + return _sim_services.MessageTCDevice_restart(self, *args) + + def shutdown(self, *args): + return _sim_services.MessageTCDevice_shutdown(self, *args) + __swig_setmethods__["port"] = _sim_services.MessageTCDevice_port_set + __swig_getmethods__["port"] = _sim_services.MessageTCDevice_port_get + if _newclass: + port = _swig_property(_sim_services.MessageTCDevice_port_get, _sim_services.MessageTCDevice_port_set) +MessageTCDevice_swigregister = _sim_services.MessageTCDevice_swigregister +MessageTCDevice_swigregister(MessageTCDevice) + + +def message_subscribe(*args): + return _sim_services.message_subscribe(*args) +message_subscribe = _sim_services.message_subscribe + +def message_unsubscribe(*args): + return _sim_services.message_unsubscribe(*args) +message_unsubscribe = _sim_services.message_unsubscribe + +def open_custom_message_file(*args): + return _sim_services.open_custom_message_file(*args) +open_custom_message_file = _sim_services.open_custom_message_file +class MonteVar(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVar, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MonteVar, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_setmethods__["name"] = _sim_services.MonteVar_name_set + __swig_getmethods__["name"] = _sim_services.MonteVar_name_get + if _newclass: + name = _swig_property(_sim_services.MonteVar_name_get, _sim_services.MonteVar_name_set) + __swig_setmethods__["unit"] = _sim_services.MonteVar_unit_set + __swig_getmethods__["unit"] = _sim_services.MonteVar_unit_get + if _newclass: + unit = _swig_property(_sim_services.MonteVar_unit_get, _sim_services.MonteVar_unit_set) + __swig_setmethods__["value"] = _sim_services.MonteVar_value_set + __swig_getmethods__["value"] = _sim_services.MonteVar_value_get + if _newclass: + value = _swig_property(_sim_services.MonteVar_value_get, _sim_services.MonteVar_value_set) + __swig_destroy__ = _sim_services.delete_MonteVar + __del__ = lambda self: None + + def set_unit(self, *args): + return _sim_services.MonteVar_set_unit(self, *args) + + def describe_variable(self, *args): + return _sim_services.MonteVar_describe_variable(self, *args) +MonteVar_swigregister = _sim_services.MonteVar_swigregister +MonteVar_swigregister(MonteVar) + +class MonteVarVector(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarVector, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MonteVarVector, name) + __repr__ = _swig_repr + + def iterator(self, *args): + return _sim_services.MonteVarVector_iterator(self, *args) + def __iter__(self): + return self.iterator() + + def __nonzero__(self, *args): + return _sim_services.MonteVarVector___nonzero__(self, *args) + + def __bool__(self, *args): + return _sim_services.MonteVarVector___bool__(self, *args) + + def __len__(self, *args): + return _sim_services.MonteVarVector___len__(self, *args) + + def __getslice__(self, *args): + return _sim_services.MonteVarVector___getslice__(self, *args) + + def __setslice__(self, *args): + return _sim_services.MonteVarVector___setslice__(self, *args) + + def __delslice__(self, *args): + return _sim_services.MonteVarVector___delslice__(self, *args) + + def __delitem__(self, *args): + return _sim_services.MonteVarVector___delitem__(self, *args) + + def __getitem__(self, *args): + return _sim_services.MonteVarVector___getitem__(self, *args) + + def __setitem__(self, *args): + return _sim_services.MonteVarVector___setitem__(self, *args) + + def pop(self, *args): + return _sim_services.MonteVarVector_pop(self, *args) + + def append(self, *args): + return _sim_services.MonteVarVector_append(self, *args) + + def empty(self, *args): + return _sim_services.MonteVarVector_empty(self, *args) + + def size(self, *args): + return _sim_services.MonteVarVector_size(self, *args) + + def swap(self, *args): + return _sim_services.MonteVarVector_swap(self, *args) + + def begin(self, *args): + return _sim_services.MonteVarVector_begin(self, *args) + + def end(self, *args): + return _sim_services.MonteVarVector_end(self, *args) + + def rbegin(self, *args): + return _sim_services.MonteVarVector_rbegin(self, *args) + + def rend(self, *args): + return _sim_services.MonteVarVector_rend(self, *args) + + def clear(self, *args): + return _sim_services.MonteVarVector_clear(self, *args) + + def get_allocator(self, *args): + return _sim_services.MonteVarVector_get_allocator(self, *args) + + def pop_back(self, *args): + return _sim_services.MonteVarVector_pop_back(self, *args) + + def erase(self, *args): + return _sim_services.MonteVarVector_erase(self, *args) + + def __init__(self, *args): + this = _sim_services.new_MonteVarVector(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def push_back(self, *args): + return _sim_services.MonteVarVector_push_back(self, *args) + + def front(self, *args): + return _sim_services.MonteVarVector_front(self, *args) + + def back(self, *args): + return _sim_services.MonteVarVector_back(self, *args) + + def assign(self, *args): + return _sim_services.MonteVarVector_assign(self, *args) + + def resize(self, *args): + return _sim_services.MonteVarVector_resize(self, *args) + + def insert(self, *args): + return _sim_services.MonteVarVector_insert(self, *args) + + def reserve(self, *args): + return _sim_services.MonteVarVector_reserve(self, *args) + + def capacity(self, *args): + return _sim_services.MonteVarVector_capacity(self, *args) + __swig_destroy__ = _sim_services.delete_MonteVarVector + __del__ = lambda self: None +MonteVarVector_swigregister = _sim_services.MonteVarVector_swigregister +MonteVarVector_swigregister(MonteVarVector) + +class MonteRun(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteRun, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MonteRun, name) + __repr__ = _swig_repr + MC_RUN_INCOMPLETE = _sim_services.MonteRun_MC_RUN_INCOMPLETE + MC_RUN_COMPLETE = _sim_services.MonteRun_MC_RUN_COMPLETE + MC_RUN_FAILED = _sim_services.MonteRun_MC_RUN_FAILED + MC_RUN_DUMPED_CORE = _sim_services.MonteRun_MC_RUN_DUMPED_CORE + MC_RUN_TIMED_OUT = _sim_services.MonteRun_MC_RUN_TIMED_OUT + MC_CANT_CREATE_OUTPUT_DIR = _sim_services.MonteRun_MC_CANT_CREATE_OUTPUT_DIR + MC_PROBLEM_PARSING_INPUT = _sim_services.MonteRun_MC_PROBLEM_PARSING_INPUT + MC_UNRECOGNIZED_RETURN_CODE = _sim_services.MonteRun_MC_UNRECOGNIZED_RETURN_CODE + __swig_setmethods__["id"] = _sim_services.MonteRun_id_set + __swig_getmethods__["id"] = _sim_services.MonteRun_id_get + if _newclass: + id = _swig_property(_sim_services.MonteRun_id_get, _sim_services.MonteRun_id_set) + __swig_setmethods__["num_tries"] = _sim_services.MonteRun_num_tries_set + __swig_getmethods__["num_tries"] = _sim_services.MonteRun_num_tries_get + if _newclass: + num_tries = _swig_property(_sim_services.MonteRun_num_tries_get, _sim_services.MonteRun_num_tries_set) + __swig_setmethods__["start_time"] = _sim_services.MonteRun_start_time_set + __swig_getmethods__["start_time"] = _sim_services.MonteRun_start_time_get + if _newclass: + start_time = _swig_property(_sim_services.MonteRun_start_time_get, _sim_services.MonteRun_start_time_set) + __swig_setmethods__["end_time"] = _sim_services.MonteRun_end_time_set + __swig_getmethods__["end_time"] = _sim_services.MonteRun_end_time_get + if _newclass: + end_time = _swig_property(_sim_services.MonteRun_end_time_get, _sim_services.MonteRun_end_time_set) + __swig_setmethods__["variables"] = _sim_services.MonteRun_variables_set + __swig_getmethods__["variables"] = _sim_services.MonteRun_variables_get + if _newclass: + variables = _swig_property(_sim_services.MonteRun_variables_get, _sim_services.MonteRun_variables_set) + __swig_setmethods__["exit_status"] = _sim_services.MonteRun_exit_status_set + __swig_getmethods__["exit_status"] = _sim_services.MonteRun_exit_status_get + if _newclass: + exit_status = _swig_property(_sim_services.MonteRun_exit_status_get, _sim_services.MonteRun_exit_status_set) + + def __init__(self, *args): + this = _sim_services.new_MonteRun(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def exit_status_string(self, *args): + return _sim_services.MonteRun_exit_status_string(self, *args) + __swig_destroy__ = _sim_services.delete_MonteRun + __del__ = lambda self: None +MonteRun_swigregister = _sim_services.MonteRun_swigregister +MonteRun_swigregister(MonteRun) + +class MonteSlave(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteSlave, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MonteSlave, name) + __repr__ = _swig_repr + MC_UNINITIALIZED = _sim_services.MonteSlave_MC_UNINITIALIZED + MC_INITIALIZING = _sim_services.MonteSlave_MC_INITIALIZING + MC_READY = _sim_services.MonteSlave_MC_READY + MC_RUNNING = _sim_services.MonteSlave_MC_RUNNING + MC_STOPPING = _sim_services.MonteSlave_MC_STOPPING + MC_STOPPED = _sim_services.MonteSlave_MC_STOPPED + MC_FINISHED = _sim_services.MonteSlave_MC_FINISHED + MC_UNRESPONSIVE_RUNNING = _sim_services.MonteSlave_MC_UNRESPONSIVE_RUNNING + MC_UNRESPONSIVE_STOPPING = _sim_services.MonteSlave_MC_UNRESPONSIVE_STOPPING + MC_DISCONNECTED = _sim_services.MonteSlave_MC_DISCONNECTED + MC_PROCESS_RUN = _sim_services.MonteSlave_MC_PROCESS_RUN + MC_SHUTDOWN = _sim_services.MonteSlave_MC_SHUTDOWN + MC_DIE = _sim_services.MonteSlave_MC_DIE + __swig_setmethods__["id"] = _sim_services.MonteSlave_id_set + __swig_getmethods__["id"] = _sim_services.MonteSlave_id_get + if _newclass: + id = _swig_property(_sim_services.MonteSlave_id_get, _sim_services.MonteSlave_id_set) + __swig_setmethods__["state"] = _sim_services.MonteSlave_state_set + __swig_getmethods__["state"] = _sim_services.MonteSlave_state_get + if _newclass: + state = _swig_property(_sim_services.MonteSlave_state_get, _sim_services.MonteSlave_state_set) + __swig_setmethods__["machine_name"] = _sim_services.MonteSlave_machine_name_set + __swig_getmethods__["machine_name"] = _sim_services.MonteSlave_machine_name_get + if _newclass: + machine_name = _swig_property(_sim_services.MonteSlave_machine_name_get, _sim_services.MonteSlave_machine_name_set) + __swig_setmethods__["port"] = _sim_services.MonteSlave_port_set + __swig_getmethods__["port"] = _sim_services.MonteSlave_port_get + if _newclass: + port = _swig_property(_sim_services.MonteSlave_port_get, _sim_services.MonteSlave_port_set) + __swig_setmethods__["current_run"] = _sim_services.MonteSlave_current_run_set + __swig_getmethods__["current_run"] = _sim_services.MonteSlave_current_run_get + if _newclass: + current_run = _swig_property(_sim_services.MonteSlave_current_run_get, _sim_services.MonteSlave_current_run_set) + __swig_setmethods__["num_dispatches"] = _sim_services.MonteSlave_num_dispatches_set + __swig_getmethods__["num_dispatches"] = _sim_services.MonteSlave_num_dispatches_get + if _newclass: + num_dispatches = _swig_property(_sim_services.MonteSlave_num_dispatches_get, _sim_services.MonteSlave_num_dispatches_set) + __swig_setmethods__["num_results"] = _sim_services.MonteSlave_num_results_set + __swig_getmethods__["num_results"] = _sim_services.MonteSlave_num_results_get + if _newclass: + num_results = _swig_property(_sim_services.MonteSlave_num_results_get, _sim_services.MonteSlave_num_results_set) + __swig_setmethods__["cpu_time"] = _sim_services.MonteSlave_cpu_time_set + __swig_getmethods__["cpu_time"] = _sim_services.MonteSlave_cpu_time_get + if _newclass: + cpu_time = _swig_property(_sim_services.MonteSlave_cpu_time_get, _sim_services.MonteSlave_cpu_time_set) + __swig_setmethods__["remote_shell"] = _sim_services.MonteSlave_remote_shell_set + __swig_getmethods__["remote_shell"] = _sim_services.MonteSlave_remote_shell_get + if _newclass: + remote_shell = _swig_property(_sim_services.MonteSlave_remote_shell_get, _sim_services.MonteSlave_remote_shell_set) + __swig_setmethods__["user_remote_shell"] = _sim_services.MonteSlave_user_remote_shell_set + __swig_getmethods__["user_remote_shell"] = _sim_services.MonteSlave_user_remote_shell_get + if _newclass: + user_remote_shell = _swig_property(_sim_services.MonteSlave_user_remote_shell_get, _sim_services.MonteSlave_user_remote_shell_set) + __swig_setmethods__["remote_shell_args"] = _sim_services.MonteSlave_remote_shell_args_set + __swig_getmethods__["remote_shell_args"] = _sim_services.MonteSlave_remote_shell_args_get + if _newclass: + remote_shell_args = _swig_property(_sim_services.MonteSlave_remote_shell_args_get, _sim_services.MonteSlave_remote_shell_args_set) + __swig_setmethods__["multiplier"] = _sim_services.MonteSlave_multiplier_set + __swig_getmethods__["multiplier"] = _sim_services.MonteSlave_multiplier_get + if _newclass: + multiplier = _swig_property(_sim_services.MonteSlave_multiplier_get, _sim_services.MonteSlave_multiplier_set) + __swig_setmethods__["sim_path"] = _sim_services.MonteSlave_sim_path_set + __swig_getmethods__["sim_path"] = _sim_services.MonteSlave_sim_path_get + if _newclass: + sim_path = _swig_property(_sim_services.MonteSlave_sim_path_get, _sim_services.MonteSlave_sim_path_set) + __swig_setmethods__["S_main_name"] = _sim_services.MonteSlave_S_main_name_set + __swig_getmethods__["S_main_name"] = _sim_services.MonteSlave_S_main_name_get + if _newclass: + S_main_name = _swig_property(_sim_services.MonteSlave_S_main_name_get, _sim_services.MonteSlave_S_main_name_set) + + def set_S_main_name(self, *args): + return _sim_services.MonteSlave_set_S_main_name(self, *args) + + def __init__(self, *args): + this = _sim_services.new_MonteSlave(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteSlave + __del__ = lambda self: None +MonteSlave_swigregister = _sim_services.MonteSlave_swigregister +MonteSlave_swigregister(MonteSlave) + +class MonteRange(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteRange, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, MonteRange, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteRange(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def get_start(self, *args): + return _sim_services.MonteRange_get_start(self, *args) + + def get_end(self, *args): + return _sim_services.MonteRange_get_end(self, *args) + __swig_destroy__ = _sim_services.delete_MonteRange + __del__ = lambda self: None +MonteRange_swigregister = _sim_services.MonteRange_swigregister +MonteRange_swigregister(MonteRange) + +class MonteCarlo(Scheduler): + __swig_setmethods__ = {} + for _s in [Scheduler]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarlo, name, value) + __swig_getmethods__ = {} + for _s in [Scheduler]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteCarlo, name) + __repr__ = _swig_repr + MC_NONE = _sim_services.MonteCarlo_MC_NONE + MC_ERROR = _sim_services.MonteCarlo_MC_ERROR + MC_INFORMATIONAL = _sim_services.MonteCarlo_MC_INFORMATIONAL + MC_ALL = _sim_services.MonteCarlo_MC_ALL + __swig_setmethods__["slave_sim_options"] = _sim_services.MonteCarlo_slave_sim_options_set + __swig_getmethods__["slave_sim_options"] = _sim_services.MonteCarlo_slave_sim_options_get + if _newclass: + slave_sim_options = _swig_property(_sim_services.MonteCarlo_slave_sim_options_get, _sim_services.MonteCarlo_slave_sim_options_set) + __swig_setmethods__["slave_output_directory"] = _sim_services.MonteCarlo_slave_output_directory_set + __swig_getmethods__["slave_output_directory"] = _sim_services.MonteCarlo_slave_output_directory_get + if _newclass: + slave_output_directory = _swig_property(_sim_services.MonteCarlo_slave_output_directory_get, _sim_services.MonteCarlo_slave_output_directory_set) + + def __init__(self, *args): + this = _sim_services.new_MonteCarlo(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MonteCarlo + __del__ = lambda self: None + + def execute_monte(self, *args): + return _sim_services.MonteCarlo_execute_monte(self, *args) + + def set_enabled(self, *args): + return _sim_services.MonteCarlo_set_enabled(self, *args) + + def get_enabled(self, *args): + return _sim_services.MonteCarlo_get_enabled(self, *args) + + def set_dry_run(self, *args): + return _sim_services.MonteCarlo_set_dry_run(self, *args) + + def get_dry_run(self, *args): + return _sim_services.MonteCarlo_get_dry_run(self, *args) + + def is_slave(self, *args): + return _sim_services.MonteCarlo_is_slave(self, *args) + + def is_master(self, *args): + return _sim_services.MonteCarlo_is_master(self, *args) + + def set_localhost_as_remote(self, *args): + return _sim_services.MonteCarlo_set_localhost_as_remote(self, *args) + + def get_localhost_as_remote(self, *args): + return _sim_services.MonteCarlo_get_localhost_as_remote(self, *args) + + def set_custom_slave_dispatch(self, *args): + return _sim_services.MonteCarlo_set_custom_slave_dispatch(self, *args) + + def get_custom_slave_dispatch(self, *args): + return _sim_services.MonteCarlo_get_custom_slave_dispatch(self, *args) + + def set_timeout(self, *args): + return _sim_services.MonteCarlo_set_timeout(self, *args) + + def get_timeout(self, *args): + return _sim_services.MonteCarlo_get_timeout(self, *args) + + def set_max_tries(self, *args): + return _sim_services.MonteCarlo_set_max_tries(self, *args) + + def get_max_tries(self, *args): + return _sim_services.MonteCarlo_get_max_tries(self, *args) + + def set_user_cmd_string(self, *args): + return _sim_services.MonteCarlo_set_user_cmd_string(self, *args) + + def get_user_cmd_string(self, *args): + return _sim_services.MonteCarlo_get_user_cmd_string(self, *args) + + def get_user_cmd_string_c_str(self, *args): + return _sim_services.MonteCarlo_get_user_cmd_string_c_str(self, *args) + + def set_custom_pre_text(self, *args): + return _sim_services.MonteCarlo_set_custom_pre_text(self, *args) + + def get_custom_pre_text(self, *args): + return _sim_services.MonteCarlo_get_custom_pre_text(self, *args) + + def get_custom_pre_text_c_str(self, *args): + return _sim_services.MonteCarlo_get_custom_pre_text_c_str(self, *args) + + def set_custom_post_text(self, *args): + return _sim_services.MonteCarlo_set_custom_post_text(self, *args) + + def get_custom_post_text(self, *args): + return _sim_services.MonteCarlo_get_custom_post_text(self, *args) + + def get_custom_post_text_c_str(self, *args): + return _sim_services.MonteCarlo_get_custom_post_text_c_str(self, *args) + + def set_verbosity(self, *args): + return _sim_services.MonteCarlo_set_verbosity(self, *args) + + def get_verbosity(self, *args): + return _sim_services.MonteCarlo_get_verbosity(self, *args) + + def set_num_runs(self, *args): + return _sim_services.MonteCarlo_set_num_runs(self, *args) + + def get_num_runs(self, *args): + return _sim_services.MonteCarlo_get_num_runs(self, *args) + + def get_num_results(self, *args): + return _sim_services.MonteCarlo_get_num_results(self, *args) + + def get_slave_id(self, *args): + return _sim_services.MonteCarlo_get_slave_id(self, *args) + + def add_range(self, *args): + return _sim_services.MonteCarlo_add_range(self, *args) + + def in_range(self, *args): + return _sim_services.MonteCarlo_in_range(self, *args) + + def get_ranges(self, *args): + return _sim_services.MonteCarlo_get_ranges(self, *args) + + def add_variable(self, *args): + return _sim_services.MonteCarlo_add_variable(self, *args) + + def get_variable(self, *args): + return _sim_services.MonteCarlo_get_variable(self, *args) + + def get_variables(self, *args): + return _sim_services.MonteCarlo_get_variables(self, *args) + + def add_slave(self, *args): + return _sim_services.MonteCarlo_add_slave(self, *args) + + def start_slave(self, *args): + return _sim_services.MonteCarlo_start_slave(self, *args) + + def stop_slave(self, *args): + return _sim_services.MonteCarlo_stop_slave(self, *args) + + def disable_slave(self, *args): + return _sim_services.MonteCarlo_disable_slave(self, *args) + + def process_sim_args(self, *args): + return _sim_services.MonteCarlo_process_sim_args(self, *args) + + def shutdown(self, *args): + return _sim_services.MonteCarlo_shutdown(self, *args) + + def get_current_run(self, *args): + return _sim_services.MonteCarlo_get_current_run(self, *args) + + def set_current_run(self, *args): + return _sim_services.MonteCarlo_set_current_run(self, *args) + + def set_listen_device_port(self, *args): + return _sim_services.MonteCarlo_set_listen_device_port(self, *args) + + def set_connection_device_port(self, *args): + return _sim_services.MonteCarlo_set_connection_device_port(self, *args) + + def get_listen_device_port(self, *args): + return _sim_services.MonteCarlo_get_listen_device_port(self, *args) + + def get_connection_device_port(self, *args): + return _sim_services.MonteCarlo_get_connection_device_port(self, *args) + + def write(self, *args): + return _sim_services.MonteCarlo_write(self, *args) + + def read(self, *args): + return _sim_services.MonteCarlo_read(self, *args) +MonteCarlo_swigregister = _sim_services.MonteCarlo_swigregister +MonteCarlo_swigregister(MonteCarlo) + + +def tc_init(*args): + return _sim_services.tc_init(*args) +tc_init = _sim_services.tc_init + +def tc_init_with_connection_info(*args): + return _sim_services.tc_init_with_connection_info(*args) +tc_init_with_connection_info = _sim_services.tc_init_with_connection_info + +def tc_listen(*args): + return _sim_services.tc_listen(*args) +tc_listen = _sim_services.tc_listen + +def tc_accept_(*args): + return _sim_services.tc_accept_(*args) +tc_accept_ = _sim_services.tc_accept_ + +def tc_connect_(*args): + return _sim_services.tc_connect_(*args) +tc_connect_ = _sim_services.tc_connect_ + +def tc_clock_init(*args): + return _sim_services.tc_clock_init(*args) +tc_clock_init = _sim_services.tc_clock_init + +def tc_clock_time(*args): + return _sim_services.tc_clock_time(*args) +tc_clock_time = _sim_services.tc_clock_time + +def tc_pending(*args): + return _sim_services.tc_pending(*args) +tc_pending = _sim_services.tc_pending + +def tc_blockio(*args): + return _sim_services.tc_blockio(*args) +tc_blockio = _sim_services.tc_blockio + +def tc_isValid(*args): + return _sim_services.tc_isValid(*args) +tc_isValid = _sim_services.tc_isValid + +def tc_set_blockio_timeout_limit(*args): + return _sim_services.tc_set_blockio_timeout_limit(*args) +tc_set_blockio_timeout_limit = _sim_services.tc_set_blockio_timeout_limit + +def tc_read_(*args): + return _sim_services.tc_read_(*args) +tc_read_ = _sim_services.tc_read_ + +def tc_read_byteswap(*args): + return _sim_services.tc_read_byteswap(*args) +tc_read_byteswap = _sim_services.tc_read_byteswap + +def tc_write_(*args): + return _sim_services.tc_write_(*args) +tc_write_ = _sim_services.tc_write_ + +def tc_write_byteswap(*args): + return _sim_services.tc_write_byteswap(*args) +tc_write_byteswap = _sim_services.tc_write_byteswap + +def tc_disconnect(*args): + return _sim_services.tc_disconnect(*args) +tc_disconnect = _sim_services.tc_disconnect + +def tc_multiconnect(*args): + return _sim_services.tc_multiconnect(*args) +tc_multiconnect = _sim_services.tc_multiconnect + +def tc_init_udp_client(*args): + return _sim_services.tc_init_udp_client(*args) +tc_init_udp_client = _sim_services.tc_init_udp_client + +def tc_init_udp_server(*args): + return _sim_services.tc_init_udp_server(*args) +tc_init_udp_server = _sim_services.tc_init_udp_server + +def tc_init_mcast_client(*args): + return _sim_services.tc_init_mcast_client(*args) +tc_init_mcast_client = _sim_services.tc_init_mcast_client + +def tc_init_mcast_server(*args): + return _sim_services.tc_init_mcast_server(*args) +tc_init_mcast_server = _sim_services.tc_init_mcast_server + +def tc_broadcast_conninfo(*args): + return _sim_services.tc_broadcast_conninfo(*args) +tc_broadcast_conninfo = _sim_services.tc_broadcast_conninfo + +def tc_error(*args): + return _sim_services.tc_error(*args) +tc_error = _sim_services.tc_error + +def tc_dev_copy(*args): + return _sim_services.tc_dev_copy(*args) +tc_dev_copy = _sim_services.tc_dev_copy + +def trick_bswap_buffer(*args): + return _sim_services.trick_bswap_buffer(*args) +trick_bswap_buffer = _sim_services.trick_bswap_buffer + +def trick_bswap_single_parameter(*args): + return _sim_services.trick_bswap_single_parameter(*args) +trick_bswap_single_parameter = _sim_services.trick_bswap_single_parameter + +def mc_set_enabled(*args): + return _sim_services.mc_set_enabled(*args) +mc_set_enabled = _sim_services.mc_set_enabled + +def mc_get_enabled(*args): + return _sim_services.mc_get_enabled(*args) +mc_get_enabled = _sim_services.mc_get_enabled + +def mc_set_dry_run(*args): + return _sim_services.mc_set_dry_run(*args) +mc_set_dry_run = _sim_services.mc_set_dry_run + +def mc_get_dry_run(*args): + return _sim_services.mc_get_dry_run(*args) +mc_get_dry_run = _sim_services.mc_get_dry_run + +def mc_is_slave(*args): + return _sim_services.mc_is_slave(*args) +mc_is_slave = _sim_services.mc_is_slave + +def mc_set_localhost_as_remote(*args): + return _sim_services.mc_set_localhost_as_remote(*args) +mc_set_localhost_as_remote = _sim_services.mc_set_localhost_as_remote + +def mc_get_localhost_as_remote(*args): + return _sim_services.mc_get_localhost_as_remote(*args) +mc_get_localhost_as_remote = _sim_services.mc_get_localhost_as_remote + +def mc_set_custom_slave_dispatch(*args): + return _sim_services.mc_set_custom_slave_dispatch(*args) +mc_set_custom_slave_dispatch = _sim_services.mc_set_custom_slave_dispatch + +def mc_get_custom_slave_dispatch(*args): + return _sim_services.mc_get_custom_slave_dispatch(*args) +mc_get_custom_slave_dispatch = _sim_services.mc_get_custom_slave_dispatch + +def mc_set_timeout(*args): + return _sim_services.mc_set_timeout(*args) +mc_set_timeout = _sim_services.mc_set_timeout + +def mc_get_timeout(*args): + return _sim_services.mc_get_timeout(*args) +mc_get_timeout = _sim_services.mc_get_timeout + +def mc_set_max_tries(*args): + return _sim_services.mc_set_max_tries(*args) +mc_set_max_tries = _sim_services.mc_set_max_tries + +def mc_get_max_tries(*args): + return _sim_services.mc_get_max_tries(*args) +mc_get_max_tries = _sim_services.mc_get_max_tries + +def mc_set_user_cmd_string(*args): + return _sim_services.mc_set_user_cmd_string(*args) +mc_set_user_cmd_string = _sim_services.mc_set_user_cmd_string + +def mc_set_slave_sim_options(*args): + return _sim_services.mc_set_slave_sim_options(*args) +mc_set_slave_sim_options = _sim_services.mc_set_slave_sim_options + +def mc_set_slave_output_directory(*args): + return _sim_services.mc_set_slave_output_directory(*args) +mc_set_slave_output_directory = _sim_services.mc_set_slave_output_directory + +def mc_get_slave_sim_options(*args): + return _sim_services.mc_get_slave_sim_options(*args) +mc_get_slave_sim_options = _sim_services.mc_get_slave_sim_options + +def mc_get_user_cmd_string(*args): + return _sim_services.mc_get_user_cmd_string(*args) +mc_get_user_cmd_string = _sim_services.mc_get_user_cmd_string + +def mc_set_custom_pre_text(*args): + return _sim_services.mc_set_custom_pre_text(*args) +mc_set_custom_pre_text = _sim_services.mc_set_custom_pre_text + +def mc_get_custom_pre_text(*args): + return _sim_services.mc_get_custom_pre_text(*args) +mc_get_custom_pre_text = _sim_services.mc_get_custom_pre_text + +def mc_set_custom_post_text(*args): + return _sim_services.mc_set_custom_post_text(*args) +mc_set_custom_post_text = _sim_services.mc_set_custom_post_text + +def mc_get_custom_post_text(*args): + return _sim_services.mc_get_custom_post_text(*args) +mc_get_custom_post_text = _sim_services.mc_get_custom_post_text + +def mc_set_verbosity(*args): + return _sim_services.mc_set_verbosity(*args) +mc_set_verbosity = _sim_services.mc_set_verbosity + +def mc_get_verbosity(*args): + return _sim_services.mc_get_verbosity(*args) +mc_get_verbosity = _sim_services.mc_get_verbosity + +def mc_set_num_runs(*args): + return _sim_services.mc_set_num_runs(*args) +mc_set_num_runs = _sim_services.mc_set_num_runs + +def mc_get_num_runs(*args): + return _sim_services.mc_get_num_runs(*args) +mc_get_num_runs = _sim_services.mc_get_num_runs + +def mc_get_num_results(*args): + return _sim_services.mc_get_num_results(*args) +mc_get_num_results = _sim_services.mc_get_num_results + +def mc_get_slave_id(*args): + return _sim_services.mc_get_slave_id(*args) +mc_get_slave_id = _sim_services.mc_get_slave_id + +def mc_add_range(*args): + return _sim_services.mc_add_range(*args) +mc_add_range = _sim_services.mc_add_range + +def mc_add_slave(*args): + return _sim_services.mc_add_slave(*args) +mc_add_slave = _sim_services.mc_add_slave + +def mc_start_slave(*args): + return _sim_services.mc_start_slave(*args) +mc_start_slave = _sim_services.mc_start_slave + +def mc_stop_slave(*args): + return _sim_services.mc_stop_slave(*args) +mc_stop_slave = _sim_services.mc_stop_slave + +def mc_write(*args): + return _sim_services.mc_write(*args) +mc_write = _sim_services.mc_write + +def mc_read(*args): + return _sim_services.mc_read(*args) +mc_read = _sim_services.mc_read + +def mc_get_current_run(*args): + return _sim_services.mc_get_current_run(*args) +mc_get_current_run = _sim_services.mc_get_current_run + +def mc_set_current_run(*args): + return _sim_services.mc_set_current_run(*args) +mc_set_current_run = _sim_services.mc_set_current_run + +def mc_set_listen_device_port(*args): + return _sim_services.mc_set_listen_device_port(*args) +mc_set_listen_device_port = _sim_services.mc_set_listen_device_port + +def mc_set_connection_device_port(*args): + return _sim_services.mc_set_connection_device_port(*args) +mc_set_connection_device_port = _sim_services.mc_set_connection_device_port + +def mc_get_listen_device_port(*args): + return _sim_services.mc_get_listen_device_port(*args) +mc_get_listen_device_port = _sim_services.mc_get_listen_device_port + +def mc_get_connection_device_port(*args): + return _sim_services.mc_get_connection_device_port(*args) +mc_get_connection_device_port = _sim_services.mc_get_connection_device_port +class MonteVarCalculated(MonteVar): + __swig_setmethods__ = {} + for _s in [MonteVar]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarCalculated, name, value) + __swig_getmethods__ = {} + for _s in [MonteVar]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteVarCalculated, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteVarCalculated(*args) + try: self.this.append(this) + except: self.this = this + this.own(0) + self.this.own(0) + + + + def describe_variable(self): + return _sim_services.MonteVarCalculated_describe_variable(self) + __swig_destroy__ = _sim_services.delete_MonteVarCalculated + __del__ = lambda self: None +MonteVarCalculated_swigregister = _sim_services.MonteVarCalculated_swigregister +MonteVarCalculated_swigregister(MonteVarCalculated) + +class MonteVarFile(MonteVar): + __swig_setmethods__ = {} + for _s in [MonteVar]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarFile, name, value) + __swig_getmethods__ = {} + for _s in [MonteVar]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteVarFile, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteVarFile(*args) + try: self.this.append(this) + except: self.this = this + this.own(0) + self.this.own(0) + + + __swig_destroy__ = _sim_services.delete_MonteVarFile + __del__ = lambda self: None + + def set_file_name(self, in_file_name): + return _sim_services.MonteVarFile_set_file_name(self, in_file_name) + + def set_column(self, in_column): + return _sim_services.MonteVarFile_set_column(self, in_column) + + def describe_variable(self): + return _sim_services.MonteVarFile_describe_variable(self) +MonteVarFile_swigregister = _sim_services.MonteVarFile_swigregister +MonteVarFile_swigregister(MonteVarFile) + +class MonteVarFixed(MonteVar): + __swig_setmethods__ = {} + for _s in [MonteVar]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarFixed, name, value) + __swig_getmethods__ = {} + for _s in [MonteVar]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteVarFixed, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MonteVarFixed(*args) + try: self.this.append(this) + except: self.this = this + this.own(0) + self.this.own(0) + + + + def set_value(self, in_value): + return _sim_services.MonteVarFixed_set_value(self, in_value) + + def describe_variable(self): + return _sim_services.MonteVarFixed_describe_variable(self) + __swig_destroy__ = _sim_services.delete_MonteVarFixed + __del__ = lambda self: None +MonteVarFixed_swigregister = _sim_services.MonteVarFixed_swigregister +MonteVarFixed_swigregister(MonteVarFixed) + +class StlRandomGenerator(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, StlRandomGenerator, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, StlRandomGenerator, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + TRICK_DEFAULT_ENGINE = _sim_services.StlRandomGenerator_TRICK_DEFAULT_ENGINE + GAUSSIAN = _sim_services.StlRandomGenerator_GAUSSIAN + FLAT = _sim_services.StlRandomGenerator_FLAT + POISSON = _sim_services.StlRandomGenerator_POISSON + __swig_destroy__ = _sim_services.delete_StlRandomGenerator + __del__ = lambda self: None + + def __call__(self): + return _sim_services.StlRandomGenerator___call__(self) + + def set_seed(self, in_seed): + return _sim_services.StlRandomGenerator_set_seed(self, in_seed) + + def set_param(self, a, b=0.0): + return _sim_services.StlRandomGenerator_set_param(self, a, b) + + def get_param_a(self): + return _sim_services.StlRandomGenerator_get_param_a(self) + + def get_param_b(self): + return _sim_services.StlRandomGenerator_get_param_b(self) +StlRandomGenerator_swigregister = _sim_services.StlRandomGenerator_swigregister +StlRandomGenerator_swigregister(StlRandomGenerator) + +class StlRandomGeneratorFactory(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, StlRandomGeneratorFactory, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, StlRandomGeneratorFactory, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined") + __repr__ = _swig_repr + if _newclass: + newGenerator = staticmethod(_sim_services.StlRandomGeneratorFactory_newGenerator) + else: + newGenerator = _sim_services.StlRandomGeneratorFactory_newGenerator +StlRandomGeneratorFactory_swigregister = _sim_services.StlRandomGeneratorFactory_swigregister +StlRandomGeneratorFactory_swigregister(StlRandomGeneratorFactory) + +def StlRandomGeneratorFactory_newGenerator(*args): + return _sim_services.StlRandomGeneratorFactory_newGenerator(*args) +StlRandomGeneratorFactory_newGenerator = _sim_services.StlRandomGeneratorFactory_newGenerator + +class MonteVarRandom(MonteVar): + __swig_setmethods__ = {} + for _s in [MonteVar]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarRandom, name, value) + __swig_getmethods__ = {} + for _s in [MonteVar]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MonteVarRandom, name) + __repr__ = _swig_repr + NO_ENGINE = _sim_services.MonteVarRandom_NO_ENGINE + TRICK_DEFAULT_ENGINE = _sim_services.MonteVarRandom_TRICK_DEFAULT_ENGINE + GAUSSIAN = _sim_services.MonteVarRandom_GAUSSIAN + FLAT = _sim_services.MonteVarRandom_FLAT + POISSON = _sim_services.MonteVarRandom_POISSON + + def __init__(self, *args): + this = _sim_services.new_MonteVarRandom(*args) + try: self.this.append(this) + except: self.this = this + this.own(0) + self.this.own(0) + + + __swig_destroy__ = _sim_services.delete_MonteVarRandom + __del__ = lambda self: None + + def set_seed(self, seed): + return _sim_services.MonteVarRandom_set_seed(self, seed) + + def set_sigma(self, sigma): + return _sim_services.MonteVarRandom_set_sigma(self, sigma) + + def set_sigma_range(self, sigma_range): + return _sim_services.MonteVarRandom_set_sigma_range(self, sigma_range) + + def set_mu(self, mu): + return _sim_services.MonteVarRandom_set_mu(self, mu) + + def set_min(self, min): + return _sim_services.MonteVarRandom_set_min(self, min) + + def set_max(self, max): + return _sim_services.MonteVarRandom_set_max(self, max) + + def set_min_is_relative(self, relativity): + return _sim_services.MonteVarRandom_set_min_is_relative(self, relativity) + + def set_max_is_relative(self, relativity): + return _sim_services.MonteVarRandom_set_max_is_relative(self, relativity) + + def set_uniform_generator(self, uniform): + return _sim_services.MonteVarRandom_set_uniform_generator(self, uniform) + + def get_absolute_min(self): + return _sim_services.MonteVarRandom_get_absolute_min(self) + + def get_absolute_max(self): + return _sim_services.MonteVarRandom_get_absolute_max(self) + + def get_random_distribution(self): + return _sim_services.MonteVarRandom_get_random_distribution(self) + + def describe_variable(self): + return _sim_services.MonteVarRandom_describe_variable(self) +MonteVarRandom_swigregister = _sim_services.MonteVarRandom_swigregister +MonteVarRandom_swigregister(MonteVarRandom) + +class Timer(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Timer, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Timer, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_Timer + __del__ = lambda self: None + + def enable(self): + return _sim_services.Timer_enable(self) + + def disable(self): + return _sim_services.Timer_disable(self) + + def get_enabled(self): + return _sim_services.Timer_get_enabled(self) + + def set_active(self, in_active): + return _sim_services.Timer_set_active(self, in_active) + + def init(self): + return _sim_services.Timer_init(self) + + def start(self, frame_time): + return _sim_services.Timer_start(self, frame_time) + + def reset(self, frame_time): + return _sim_services.Timer_reset(self, frame_time) + + def stop(self): + return _sim_services.Timer_stop(self) + + def pause(self): + return _sim_services.Timer_pause(self) + + def shutdown(self): + return _sim_services.Timer_shutdown(self) +Timer_swigregister = _sim_services.Timer_swigregister +Timer_swigregister(Timer) + +class RealtimeSync(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RealtimeSync, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RealtimeSync, name) + __repr__ = _swig_repr + __swig_setmethods__["enable_flag"] = _sim_services.RealtimeSync_enable_flag_set + __swig_getmethods__["enable_flag"] = _sim_services.RealtimeSync_enable_flag_get + if _newclass: + enable_flag = _swig_property(_sim_services.RealtimeSync_enable_flag_get, _sim_services.RealtimeSync_enable_flag_set) + __swig_setmethods__["disable_flag"] = _sim_services.RealtimeSync_disable_flag_set + __swig_getmethods__["disable_flag"] = _sim_services.RealtimeSync_disable_flag_get + if _newclass: + disable_flag = _swig_property(_sim_services.RealtimeSync_disable_flag_get, _sim_services.RealtimeSync_disable_flag_set) + __swig_setmethods__["active"] = _sim_services.RealtimeSync_active_set + __swig_getmethods__["active"] = _sim_services.RealtimeSync_active_get + if _newclass: + active = _swig_property(_sim_services.RealtimeSync_active_get, _sim_services.RealtimeSync_active_set) + __swig_setmethods__["freeze_frame"] = _sim_services.RealtimeSync_freeze_frame_set + __swig_getmethods__["freeze_frame"] = _sim_services.RealtimeSync_freeze_frame_get + if _newclass: + freeze_frame = _swig_property(_sim_services.RealtimeSync_freeze_frame_get, _sim_services.RealtimeSync_freeze_frame_set) + __swig_setmethods__["freeze_time_tics"] = _sim_services.RealtimeSync_freeze_time_tics_set + __swig_getmethods__["freeze_time_tics"] = _sim_services.RealtimeSync_freeze_time_tics_get + if _newclass: + freeze_time_tics = _swig_property(_sim_services.RealtimeSync_freeze_time_tics_get, _sim_services.RealtimeSync_freeze_time_tics_set) + __swig_setmethods__["frame_overrun_cnt"] = _sim_services.RealtimeSync_frame_overrun_cnt_set + __swig_getmethods__["frame_overrun_cnt"] = _sim_services.RealtimeSync_frame_overrun_cnt_get + if _newclass: + frame_overrun_cnt = _swig_property(_sim_services.RealtimeSync_frame_overrun_cnt_get, _sim_services.RealtimeSync_frame_overrun_cnt_set) + __swig_setmethods__["total_overrun"] = _sim_services.RealtimeSync_total_overrun_set + __swig_getmethods__["total_overrun"] = _sim_services.RealtimeSync_total_overrun_get + if _newclass: + total_overrun = _swig_property(_sim_services.RealtimeSync_total_overrun_get, _sim_services.RealtimeSync_total_overrun_set) + __swig_setmethods__["rt_max_overrun_cnt"] = _sim_services.RealtimeSync_rt_max_overrun_cnt_set + __swig_getmethods__["rt_max_overrun_cnt"] = _sim_services.RealtimeSync_rt_max_overrun_cnt_get + if _newclass: + rt_max_overrun_cnt = _swig_property(_sim_services.RealtimeSync_rt_max_overrun_cnt_get, _sim_services.RealtimeSync_rt_max_overrun_cnt_set) + __swig_setmethods__["rt_max_overrun_time"] = _sim_services.RealtimeSync_rt_max_overrun_time_set + __swig_getmethods__["rt_max_overrun_time"] = _sim_services.RealtimeSync_rt_max_overrun_time_get + if _newclass: + rt_max_overrun_time = _swig_property(_sim_services.RealtimeSync_rt_max_overrun_time_get, _sim_services.RealtimeSync_rt_max_overrun_time_set) + __swig_setmethods__["rt_max_overrun_time_tics"] = _sim_services.RealtimeSync_rt_max_overrun_time_tics_set + __swig_getmethods__["rt_max_overrun_time_tics"] = _sim_services.RealtimeSync_rt_max_overrun_time_tics_get + if _newclass: + rt_max_overrun_time_tics = _swig_property(_sim_services.RealtimeSync_rt_max_overrun_time_tics_get, _sim_services.RealtimeSync_rt_max_overrun_time_tics_set) + __swig_setmethods__["rt_overrun_freeze"] = _sim_services.RealtimeSync_rt_overrun_freeze_set + __swig_getmethods__["rt_overrun_freeze"] = _sim_services.RealtimeSync_rt_overrun_freeze_get + if _newclass: + rt_overrun_freeze = _swig_property(_sim_services.RealtimeSync_rt_overrun_freeze_get, _sim_services.RealtimeSync_rt_overrun_freeze_set) + __swig_setmethods__["frame_sched_time"] = _sim_services.RealtimeSync_frame_sched_time_set + __swig_getmethods__["frame_sched_time"] = _sim_services.RealtimeSync_frame_sched_time_get + if _newclass: + frame_sched_time = _swig_property(_sim_services.RealtimeSync_frame_sched_time_get, _sim_services.RealtimeSync_frame_sched_time_set) + __swig_setmethods__["frame_overrun_time"] = _sim_services.RealtimeSync_frame_overrun_time_set + __swig_getmethods__["frame_overrun_time"] = _sim_services.RealtimeSync_frame_overrun_time_get + if _newclass: + frame_overrun_time = _swig_property(_sim_services.RealtimeSync_frame_overrun_time_get, _sim_services.RealtimeSync_frame_overrun_time_set) + __swig_setmethods__["last_clock_time"] = _sim_services.RealtimeSync_last_clock_time_set + __swig_getmethods__["last_clock_time"] = _sim_services.RealtimeSync_last_clock_time_get + if _newclass: + last_clock_time = _swig_property(_sim_services.RealtimeSync_last_clock_time_get, _sim_services.RealtimeSync_last_clock_time_set) + __swig_setmethods__["tics_per_sec"] = _sim_services.RealtimeSync_tics_per_sec_set + __swig_getmethods__["tics_per_sec"] = _sim_services.RealtimeSync_tics_per_sec_get + if _newclass: + tics_per_sec = _swig_property(_sim_services.RealtimeSync_tics_per_sec_get, _sim_services.RealtimeSync_tics_per_sec_set) + __swig_setmethods__["align_sim_to_wall_clock"] = _sim_services.RealtimeSync_align_sim_to_wall_clock_set + __swig_getmethods__["align_sim_to_wall_clock"] = _sim_services.RealtimeSync_align_sim_to_wall_clock_get + if _newclass: + align_sim_to_wall_clock = _swig_property(_sim_services.RealtimeSync_align_sim_to_wall_clock_get, _sim_services.RealtimeSync_align_sim_to_wall_clock_set) + __swig_setmethods__["align_tic_mult"] = _sim_services.RealtimeSync_align_tic_mult_set + __swig_getmethods__["align_tic_mult"] = _sim_services.RealtimeSync_align_tic_mult_get + if _newclass: + align_tic_mult = _swig_property(_sim_services.RealtimeSync_align_tic_mult_get, _sim_services.RealtimeSync_align_tic_mult_set) + __swig_setmethods__["rt_clock"] = _sim_services.RealtimeSync_rt_clock_set + __swig_getmethods__["rt_clock"] = _sim_services.RealtimeSync_rt_clock_get + if _newclass: + rt_clock = _swig_property(_sim_services.RealtimeSync_rt_clock_get, _sim_services.RealtimeSync_rt_clock_set) + __swig_setmethods__["default_clock"] = _sim_services.RealtimeSync_default_clock_set + __swig_getmethods__["default_clock"] = _sim_services.RealtimeSync_default_clock_get + if _newclass: + default_clock = _swig_property(_sim_services.RealtimeSync_default_clock_get, _sim_services.RealtimeSync_default_clock_set) + __swig_setmethods__["sleep_timer"] = _sim_services.RealtimeSync_sleep_timer_set + __swig_getmethods__["sleep_timer"] = _sim_services.RealtimeSync_sleep_timer_get + if _newclass: + sleep_timer = _swig_property(_sim_services.RealtimeSync_sleep_timer_get, _sim_services.RealtimeSync_sleep_timer_set) + __swig_setmethods__["freeze_shutdown"] = _sim_services.RealtimeSync_freeze_shutdown_set + __swig_getmethods__["freeze_shutdown"] = _sim_services.RealtimeSync_freeze_shutdown_get + if _newclass: + freeze_shutdown = _swig_property(_sim_services.RealtimeSync_freeze_shutdown_get, _sim_services.RealtimeSync_freeze_shutdown_set) + __swig_setmethods__["sim_start_time"] = _sim_services.RealtimeSync_sim_start_time_set + __swig_getmethods__["sim_start_time"] = _sim_services.RealtimeSync_sim_start_time_get + if _newclass: + sim_start_time = _swig_property(_sim_services.RealtimeSync_sim_start_time_get, _sim_services.RealtimeSync_sim_start_time_set) + __swig_setmethods__["sim_end_init_time"] = _sim_services.RealtimeSync_sim_end_init_time_set + __swig_getmethods__["sim_end_init_time"] = _sim_services.RealtimeSync_sim_end_init_time_get + if _newclass: + sim_end_init_time = _swig_property(_sim_services.RealtimeSync_sim_end_init_time_get, _sim_services.RealtimeSync_sim_end_init_time_set) + __swig_setmethods__["sim_end_time"] = _sim_services.RealtimeSync_sim_end_time_set + __swig_getmethods__["sim_end_time"] = _sim_services.RealtimeSync_sim_end_time_get + if _newclass: + sim_end_time = _swig_property(_sim_services.RealtimeSync_sim_end_time_get, _sim_services.RealtimeSync_sim_end_time_set) + + def __init__(self, in_clock, in_timer=None): + this = _sim_services.new_RealtimeSync(in_clock, in_timer) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RealtimeSync + __del__ = lambda self: None + + def enable(self): + return _sim_services.RealtimeSync_enable(self) + + def disable(self): + return _sim_services.RealtimeSync_disable(self) + + def change_clock(self, in_clock): + return _sim_services.RealtimeSync_change_clock(self, in_clock) + + def clock_get_name(self): + return _sim_services.RealtimeSync_clock_get_name(self) + + def change_timer(self, in_sleep_timer): + return _sim_services.RealtimeSync_change_timer(self, in_sleep_timer) + + def set_rt_clock_ratio(self, in_clock_ratio): + return _sim_services.RealtimeSync_set_rt_clock_ratio(self, in_clock_ratio) + + def get_sim_start_time(self): + return _sim_services.RealtimeSync_get_sim_start_time(self) + + def get_sim_end_init_time(self): + return _sim_services.RealtimeSync_get_sim_end_init_time(self) + + def get_sim_end_time(self): + return _sim_services.RealtimeSync_get_sim_end_time(self) + + def initialize(self): + return _sim_services.RealtimeSync_initialize(self) + + def restart(self, ref_time): + return _sim_services.RealtimeSync_restart(self, ref_time) + + def start_realtime(self, in_frame_time, ref_time): + return _sim_services.RealtimeSync_start_realtime(self, in_frame_time, ref_time) + + def rt_monitor(self, sim_time_tics): + return _sim_services.RealtimeSync_rt_monitor(self, sim_time_tics) + + def freeze_init(self, in_freeze_frame): + return _sim_services.RealtimeSync_freeze_init(self, in_freeze_frame) + + def freeze_pause(self, in_freeze_frame): + return _sim_services.RealtimeSync_freeze_pause(self, in_freeze_frame) + + def unfreeze(self, sim_time_tics, software_frame): + return _sim_services.RealtimeSync_unfreeze(self, sim_time_tics, software_frame) + + def shutdown(self): + return _sim_services.RealtimeSync_shutdown(self) + + def start_sleep_timer(self): + return _sim_services.RealtimeSync_start_sleep_timer(self) + + def is_active(self): + return _sim_services.RealtimeSync_is_active(self) +RealtimeSync_swigregister = _sim_services.RealtimeSync_swigregister +RealtimeSync_swigregister(RealtimeSync) + + +def real_time_change_clock(in_clock): + return _sim_services.real_time_change_clock(in_clock) +real_time_change_clock = _sim_services.real_time_change_clock + +def real_time_change_timer(in_sleep_timer): + return _sim_services.real_time_change_timer(in_sleep_timer) +real_time_change_timer = _sim_services.real_time_change_timer + +def real_time_enable(): + return _sim_services.real_time_enable() +real_time_enable = _sim_services.real_time_enable + +def real_time_disable(): + return _sim_services.real_time_disable() +real_time_disable = _sim_services.real_time_disable + +def real_time_restart(ref_time): + return _sim_services.real_time_restart(ref_time) +real_time_restart = _sim_services.real_time_restart + +def is_real_time(): + return _sim_services.is_real_time() +is_real_time = _sim_services.is_real_time + +def real_time_clock_get_name(): + return _sim_services.real_time_clock_get_name() +real_time_clock_get_name = _sim_services.real_time_clock_get_name + +def real_time_set_rt_clock_ratio(in_clock_ratio): + return _sim_services.real_time_set_rt_clock_ratio(in_clock_ratio) +real_time_set_rt_clock_ratio = _sim_services.real_time_set_rt_clock_ratio + +def real_time_lock_memory(yes_no): + return _sim_services.real_time_lock_memory(yes_no) +real_time_lock_memory = _sim_services.real_time_lock_memory + +def exec_set_lock_memory(yes_no): + return _sim_services.exec_set_lock_memory(yes_no) +exec_set_lock_memory = _sim_services.exec_set_lock_memory + +def extract_bitfield_any(arg1, arg2, arg3, arg4): + return _sim_services.extract_bitfield_any(arg1, arg2, arg3, arg4) +extract_bitfield_any = _sim_services.extract_bitfield_any + +def extract_unsigned_bitfield_any(arg1, arg2, arg3, arg4): + return _sim_services.extract_unsigned_bitfield_any(arg1, arg2, arg3, arg4) +extract_unsigned_bitfield_any = _sim_services.extract_unsigned_bitfield_any + +def insert_bitfield_any(arg1, arg2, arg3, arg4, arg5): + return _sim_services.insert_bitfield_any(arg1, arg2, arg3, arg4, arg5) +insert_bitfield_any = _sim_services.insert_bitfield_any + +def addr_bitfield(A, B, field_count): + return _sim_services.addr_bitfield(A, B, field_count) +addr_bitfield = _sim_services.addr_bitfield +class RtiEventBase(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RtiEventBase, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RtiEventBase, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_RtiEventBase + __del__ = lambda self: None + + def do_assignment(self): + return _sim_services.RtiEventBase_do_assignment(self) + + def print_val(self): + return _sim_services.RtiEventBase_print_val(self) + + def print_rti(self): + return _sim_services.RtiEventBase_print_rti(self) + + def check_address(self): + return _sim_services.RtiEventBase_check_address(self) + __swig_setmethods__["ref"] = _sim_services.RtiEventBase_ref_set + __swig_getmethods__["ref"] = _sim_services.RtiEventBase_ref_get + if _newclass: + ref = _swig_property(_sim_services.RtiEventBase_ref_get, _sim_services.RtiEventBase_ref_set) +RtiEventBase_swigregister = _sim_services.RtiEventBase_swigregister +RtiEventBase_swigregister(RtiEventBase) + +class RtiList(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RtiList, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RtiList, name) + __repr__ = _swig_repr + + def execute(self, debug): + return _sim_services.RtiList_execute(self, debug) + + def print_list(self): + return _sim_services.RtiList_print_list(self) + __swig_setmethods__["event_list"] = _sim_services.RtiList_event_list_set + __swig_getmethods__["event_list"] = _sim_services.RtiList_event_list_get + if _newclass: + event_list = _swig_property(_sim_services.RtiList_event_list_get, _sim_services.RtiList_event_list_set) + + def __init__(self): + this = _sim_services.new_RtiList() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RtiList + __del__ = lambda self: None +RtiList_swigregister = _sim_services.RtiList_swigregister +RtiList_swigregister(RtiList) + +class RtiExec(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RtiExec, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RtiExec, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_RtiExec() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RtiExec + __del__ = lambda self: None + + def AddToFireList(self, rti_list): + return _sim_services.RtiExec_AddToFireList(self, rti_list) + + def Exec(self): + return _sim_services.RtiExec_Exec(self) + + def SetDebug(self, on_off): + return _sim_services.RtiExec_SetDebug(self, on_off) + + def SetFrameMultiple(self, mult): + return _sim_services.RtiExec_SetFrameMultiple(self, mult) + + def SetFrameOffset(self, offset): + return _sim_services.RtiExec_SetFrameOffset(self, offset) + __swig_setmethods__["frame_multiple"] = _sim_services.RtiExec_frame_multiple_set + __swig_getmethods__["frame_multiple"] = _sim_services.RtiExec_frame_multiple_get + if _newclass: + frame_multiple = _swig_property(_sim_services.RtiExec_frame_multiple_get, _sim_services.RtiExec_frame_multiple_set) + __swig_setmethods__["frame_offset"] = _sim_services.RtiExec_frame_offset_set + __swig_getmethods__["frame_offset"] = _sim_services.RtiExec_frame_offset_get + if _newclass: + frame_offset = _swig_property(_sim_services.RtiExec_frame_offset_get, _sim_services.RtiExec_frame_offset_set) +RtiExec_swigregister = _sim_services.RtiExec_swigregister +RtiExec_swigregister(RtiExec) + +class RtiStager(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, RtiStager, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, RtiStager, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_RtiStager() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_RtiStager + __del__ = lambda self: None + + def Add(self, *args): + return _sim_services.RtiStager_Add(self, *args) + + def Fire(self, thread_id=0): + return _sim_services.RtiStager_Fire(self, thread_id) + + def List(self): + return _sim_services.RtiStager_List(self) + + def SetDebug(self, on_off): + return _sim_services.RtiStager_SetDebug(self, on_off) + + def SetFrameMultiple(self, thread_id, mult): + return _sim_services.RtiStager_SetFrameMultiple(self, thread_id, mult) + + def SetFrameOffset(self, thread_id, offset): + return _sim_services.RtiStager_SetFrameOffset(self, thread_id, offset) + + def AddInjectorExecutor(self, arg2): + return _sim_services.RtiStager_AddInjectorExecutor(self, arg2) + + def GetRtiExecutor(self, thread_id): + return _sim_services.RtiStager_GetRtiExecutor(self, thread_id) +RtiStager_swigregister = _sim_services.RtiStager_swigregister +RtiStager_swigregister(RtiStager) + +class ITimer(Timer): + __swig_setmethods__ = {} + for _s in [Timer]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, ITimer, name, value) + __swig_getmethods__ = {} + for _s in [Timer]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, ITimer, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_ITimer() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_ITimer + __del__ = lambda self: None + + def semaphore_post(self): + return _sim_services.ITimer_semaphore_post(self) + + def init(self): + return _sim_services.ITimer_init(self) + + def start(self, frame_time): + return _sim_services.ITimer_start(self, frame_time) + + def reset(self, frame_time): + return _sim_services.ITimer_reset(self, frame_time) + + def stop(self): + return _sim_services.ITimer_stop(self) + + def pause(self): + return _sim_services.ITimer_pause(self) + + def shutdown(self): + return _sim_services.ITimer_shutdown(self) +ITimer_swigregister = _sim_services.ITimer_swigregister +ITimer_swigregister(ITimer) + + +def get_itimer(): + return _sim_services.get_itimer() +get_itimer = _sim_services.get_itimer + +def it_handler(sig): + return _sim_services.it_handler(sig) +it_handler = _sim_services.it_handler +class UCFn(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, UCFn, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, UCFn, name) + __repr__ = _swig_repr + __swig_setmethods__["C"] = _sim_services.UCFn_C_set + __swig_getmethods__["C"] = _sim_services.UCFn_C_get + if _newclass: + C = _swig_property(_sim_services.UCFn_C_get, _sim_services.UCFn_C_set) + __swig_setmethods__["t_name"] = _sim_services.UCFn_t_name_set + __swig_getmethods__["t_name"] = _sim_services.UCFn_t_name_get + if _newclass: + t_name = _swig_property(_sim_services.UCFn_t_name_get, _sim_services.UCFn_t_name_set) + __swig_setmethods__["f_name"] = _sim_services.UCFn_f_name_set + __swig_getmethods__["f_name"] = _sim_services.UCFn_f_name_get + if _newclass: + f_name = _swig_property(_sim_services.UCFn_f_name_get, _sim_services.UCFn_f_name_set) + + def __init__(self, t_name, f_name, C1, C0): + this = _sim_services.new_UCFn(t_name, f_name, C1, C0) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def eval(self, val): + return _sim_services.UCFn_eval(self, val) + __swig_destroy__ = _sim_services.delete_UCFn + __del__ = lambda self: None +UCFn_swigregister = _sim_services.UCFn_swigregister +UCFn_swigregister(UCFn) + +class Unit(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, Unit, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, Unit, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_Unit(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_Unit + __del__ = lambda self: None + + def setUnitName(self, units_spec): + return _sim_services.Unit_setUnitName(self, units_spec) + + def getUnitName(self): + return _sim_services.Unit_getUnitName(self) + + def Conversion_to(self, *args): + return _sim_services.Unit_Conversion_to(self, *args) + + def Convert_to(self, *args): + return _sim_services.Unit_Convert_to(self, *args) +Unit_swigregister = _sim_services.Unit_swigregister +Unit_swigregister(Unit) + +class TestCase(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TestCase, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TestCase, name) + __repr__ = _swig_repr + __swig_setmethods__["name"] = _sim_services.TestCase_name_set + __swig_getmethods__["name"] = _sim_services.TestCase_name_get + if _newclass: + name = _swig_property(_sim_services.TestCase_name_get, _sim_services.TestCase_name_set) + __swig_setmethods__["status"] = _sim_services.TestCase_status_set + __swig_getmethods__["status"] = _sim_services.TestCase_status_get + if _newclass: + status = _swig_property(_sim_services.TestCase_status_get, _sim_services.TestCase_status_set) + __swig_setmethods__["parent"] = _sim_services.TestCase_parent_set + __swig_getmethods__["parent"] = _sim_services.TestCase_parent_get + if _newclass: + parent = _swig_property(_sim_services.TestCase_parent_get, _sim_services.TestCase_parent_set) + __swig_setmethods__["elapsed_time"] = _sim_services.TestCase_elapsed_time_set + __swig_getmethods__["elapsed_time"] = _sim_services.TestCase_elapsed_time_get + if _newclass: + elapsed_time = _swig_property(_sim_services.TestCase_elapsed_time_get, _sim_services.TestCase_elapsed_time_set) + __swig_setmethods__["failure_string"] = _sim_services.TestCase_failure_string_set + __swig_getmethods__["failure_string"] = _sim_services.TestCase_failure_string_get + if _newclass: + failure_string = _swig_property(_sim_services.TestCase_failure_string_get, _sim_services.TestCase_failure_string_set) + + def __init__(self, test_case_name, in_failure_string): + this = _sim_services.new_TestCase(test_case_name, in_failure_string) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TestCase + __del__ = lambda self: None +TestCase_swigregister = _sim_services.TestCase_swigregister +TestCase_swigregister(TestCase) + +class TestSuite(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TestSuite, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TestSuite, name) + __repr__ = _swig_repr + __swig_setmethods__["num_failures"] = _sim_services.TestSuite_num_failures_set + __swig_getmethods__["num_failures"] = _sim_services.TestSuite_num_failures_get + if _newclass: + num_failures = _swig_property(_sim_services.TestSuite_num_failures_get, _sim_services.TestSuite_num_failures_set) + __swig_setmethods__["test_results"] = _sim_services.TestSuite_test_results_set + __swig_getmethods__["test_results"] = _sim_services.TestSuite_test_results_get + if _newclass: + test_results = _swig_property(_sim_services.TestSuite_test_results_get, _sim_services.TestSuite_test_results_set) + + def __init__(self): + this = _sim_services.new_TestSuite() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def add_test_results(self, *args): + return _sim_services.TestSuite_add_test_results(self, *args) + + def add_test_requirements(self, test_case, par_num): + return _sim_services.TestSuite_add_test_requirements(self, test_case, par_num) + + def delete_test_results(self): + return _sim_services.TestSuite_delete_test_results(self) + __swig_destroy__ = _sim_services.delete_TestSuite + __del__ = lambda self: None +TestSuite_swigregister = _sim_services.TestSuite_swigregister +TestSuite_swigregister(TestSuite) + +class UnitTest(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, UnitTest, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, UnitTest, name) + __repr__ = _swig_repr + __swig_setmethods__["enabled"] = _sim_services.UnitTest_enabled_set + __swig_getmethods__["enabled"] = _sim_services.UnitTest_enabled_get + if _newclass: + enabled = _swig_property(_sim_services.UnitTest_enabled_get, _sim_services.UnitTest_enabled_set) + __swig_setmethods__["exit_code_enabled"] = _sim_services.UnitTest_exit_code_enabled_set + __swig_getmethods__["exit_code_enabled"] = _sim_services.UnitTest_exit_code_enabled_get + if _newclass: + exit_code_enabled = _swig_property(_sim_services.UnitTest_exit_code_enabled_get, _sim_services.UnitTest_exit_code_enabled_set) + __swig_setmethods__["name"] = _sim_services.UnitTest_name_set + __swig_getmethods__["name"] = _sim_services.UnitTest_name_get + if _newclass: + name = _swig_property(_sim_services.UnitTest_name_get, _sim_services.UnitTest_name_set) + __swig_setmethods__["file_name"] = _sim_services.UnitTest_file_name_set + __swig_getmethods__["file_name"] = _sim_services.UnitTest_file_name_get + if _newclass: + file_name = _swig_property(_sim_services.UnitTest_file_name_get, _sim_services.UnitTest_file_name_set) + __swig_setmethods__["test_suites"] = _sim_services.UnitTest_test_suites_set + __swig_getmethods__["test_suites"] = _sim_services.UnitTest_test_suites_get + if _newclass: + test_suites = _swig_property(_sim_services.UnitTest_test_suites_get, _sim_services.UnitTest_test_suites_set) + + def __init__(self): + this = _sim_services.new_UnitTest() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_UnitTest + __del__ = lambda self: None + + def enable(self): + return _sim_services.UnitTest_enable(self) + + def set_exit_code_enabled(self, in_enable): + return _sim_services.UnitTest_set_exit_code_enabled(self, in_enable) + + def add_test_results(self, *args): + return _sim_services.UnitTest_add_test_results(self, *args) + + def add_test_requirements(self, in_test_suite_name, in_test_case, par_num): + return _sim_services.UnitTest_add_test_requirements(self, in_test_suite_name, in_test_case, par_num) + + def set_test_name(self, in_name): + return _sim_services.UnitTest_set_test_name(self, in_name) + + def set_file_name(self, in_name): + return _sim_services.UnitTest_set_file_name(self, in_name) + + def write_output(self): + return _sim_services.UnitTest_write_output(self) +UnitTest_swigregister = _sim_services.UnitTest_swigregister +UnitTest_swigregister(UnitTest) + + +def trick_test_enable(): + return _sim_services.trick_test_enable() +trick_test_enable = _sim_services.trick_test_enable + +def trick_test_set_file_name(in_file_name): + return _sim_services.trick_test_set_file_name(in_file_name) +trick_test_set_file_name = _sim_services.trick_test_set_file_name + +def trick_test_set_test_name(in_test_name): + return _sim_services.trick_test_set_test_name(in_test_name) +trick_test_set_test_name = _sim_services.trick_test_set_test_name + +def trick_test_add_parent(in_test_suite_name, in_test_case, par_num): + return _sim_services.trick_test_add_parent(in_test_suite_name, in_test_case, par_num) +trick_test_add_parent = _sim_services.trick_test_add_parent + +def add_test_result(in_test_suite_name, in_test_case, in_failure_string): + return _sim_services.add_test_result(in_test_suite_name, in_test_case, in_failure_string) +add_test_result = _sim_services.add_test_result + +def call_write_output(): + return _sim_services.call_write_output() +call_write_output = _sim_services.call_write_output +VS_COPY_ASYNC = _sim_services.VS_COPY_ASYNC +VS_COPY_SCHEDULED = _sim_services.VS_COPY_SCHEDULED +VS_COPY_TOP_OF_FRAME = _sim_services.VS_COPY_TOP_OF_FRAME +VS_WRITE_ASYNC = _sim_services.VS_WRITE_ASYNC +VS_WRITE_WHEN_COPIED = _sim_services.VS_WRITE_WHEN_COPIED +MAX_ARRAY_LENGTH = _sim_services.MAX_ARRAY_LENGTH +class VariableReference(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VariableReference, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VariableReference, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_VariableReference(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VariableReference + __del__ = lambda self: None + + def getName(self): + return _sim_services.VariableReference_getName(self) + + def getType(self): + return _sim_services.VariableReference_getType(self) + + def getBaseUnits(self): + return _sim_services.VariableReference_getBaseUnits(self) + + def setRequestedUnits(self, new_units): + return _sim_services.VariableReference_setRequestedUnits(self, new_units) + + def stageValue(self, validate_address=False): + return _sim_services.VariableReference_stageValue(self, validate_address) + + def prepareForWrite(self): + return _sim_services.VariableReference_prepareForWrite(self) + + def isStaged(self): + return _sim_services.VariableReference_isStaged(self) + + def isWriteReady(self): + return _sim_services.VariableReference_isWriteReady(self) + + def getSizeAscii(self): + return _sim_services.VariableReference_getSizeAscii(self) + + def getSizeBinary(self): + return _sim_services.VariableReference_getSizeBinary(self) + + def writeValueAscii(self, out): + return _sim_services.VariableReference_writeValueAscii(self, out) + + def writeValueBinary(self, out, byteswap=False): + return _sim_services.VariableReference_writeValueBinary(self, out, byteswap) + + def writeNameBinary(self, out, byteswap=False): + return _sim_services.VariableReference_writeNameBinary(self, out, byteswap) + + def writeNameLengthBinary(self, out, byteswap=False): + return _sim_services.VariableReference_writeNameLengthBinary(self, out, byteswap) + + def writeSizeBinary(self, out, byteswap=False): + return _sim_services.VariableReference_writeSizeBinary(self, out, byteswap) + + def writeTypeBinary(self, out, byteswap=False): + return _sim_services.VariableReference_writeTypeBinary(self, out, byteswap) + + def validate(self): + return _sim_services.VariableReference_validate(self) + + def tagAsInvalid(self): + return _sim_services.VariableReference_tagAsInvalid(self) + if _newclass: + byteswap_var = staticmethod(_sim_services.VariableReference_byteswap_var) + else: + byteswap_var = _sim_services.VariableReference_byteswap_var +VariableReference_swigregister = _sim_services.VariableReference_swigregister +VariableReference_swigregister(VariableReference) + +def VariableReference_byteswap_var(out, arg3, ref): + return _sim_services.VariableReference_byteswap_var(out, arg3, ref) +VariableReference_byteswap_var = _sim_services.VariableReference_byteswap_var + +class ClientConnection(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, ClientConnection, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, ClientConnection, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_ClientConnection + __del__ = lambda self: None + MAX_CMD_LEN = _sim_services.ClientConnection_MAX_CMD_LEN + TCP = _sim_services.ClientConnection_TCP + UDP = _sim_services.ClientConnection_UDP + MCAST = _sim_services.ClientConnection_MCAST + WS = _sim_services.ClientConnection_WS + + def start(self): + return _sim_services.ClientConnection_start(self) + + def write(self, *args): + return _sim_services.ClientConnection_write(self, *args) + + def read(self, *args): + return _sim_services.ClientConnection_read(self, *args) + + def setBlockMode(self, blocking): + return _sim_services.ClientConnection_setBlockMode(self, blocking) + + def disconnect(self): + return _sim_services.ClientConnection_disconnect(self) + + def isInitialized(self): + return _sim_services.ClientConnection_isInitialized(self) + + def getClientTag(self): + return _sim_services.ClientConnection_getClientTag(self) + + def setClientTag(self, tag): + return _sim_services.ClientConnection_setClientTag(self, tag) + + def restart(self): + return _sim_services.ClientConnection_restart(self) + + def getClientHostname(self): + return _sim_services.ClientConnection_getClientHostname(self) + + def getClientPort(self): + return _sim_services.ClientConnection_getClientPort(self) +ClientConnection_swigregister = _sim_services.ClientConnection_swigregister +ClientConnection_swigregister(ClientConnection) + +VS_IP_ERROR = _sim_services.VS_IP_ERROR +VS_VAR_LIST = _sim_services.VS_VAR_LIST +VS_VAR_EXISTS = _sim_services.VS_VAR_EXISTS +VS_SIE_RESOURCE = _sim_services.VS_SIE_RESOURCE +VS_LIST_SIZE = _sim_services.VS_LIST_SIZE +VS_STDIO = _sim_services.VS_STDIO +VS_SEND_ONCE = _sim_services.VS_SEND_ONCE +VS_MIN_CODE = _sim_services.VS_MIN_CODE +VS_MAX_CODE = _sim_services.VS_MAX_CODE +class VariableServerSession(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerSession, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VariableServerSession, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_VariableServerSession() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VariableServerSession + __del__ = lambda self: None + + def set_connection(self, connection): + return _sim_services.VariableServerSession_set_connection(self, connection) + + def handle_message(self): + return _sim_services.VariableServerSession_handle_message(self) + + def get_pause(self): + return _sim_services.VariableServerSession_get_pause(self) + + def set_pause(self, on_off): + return _sim_services.VariableServerSession_set_pause(self, on_off) + + def get_exit_cmd(self): + return _sim_services.VariableServerSession_get_exit_cmd(self) + + def set_exit_cmd(self): + return _sim_services.VariableServerSession_set_exit_cmd(self) + + def get_send_stdio(self): + return _sim_services.VariableServerSession_get_send_stdio(self) + + def set_send_stdio(self, on_off): + return _sim_services.VariableServerSession_set_send_stdio(self, on_off) + + def copy_and_write_freeze(self, curr_frame): + return _sim_services.VariableServerSession_copy_and_write_freeze(self, curr_frame) + + def copy_and_write_freeze_scheduled(self, curr_tics): + return _sim_services.VariableServerSession_copy_and_write_freeze_scheduled(self, curr_tics) + + def copy_and_write_scheduled(self, curr_tics): + return _sim_services.VariableServerSession_copy_and_write_scheduled(self, curr_tics) + + def copy_and_write_top(self, curr_frame): + return _sim_services.VariableServerSession_copy_and_write_top(self, curr_frame) + + def copy_and_write_async(self): + return _sim_services.VariableServerSession_copy_and_write_async(self) + + def copy_sim_data(self, *args): + return _sim_services.VariableServerSession_copy_sim_data(self, *args) + + def write_data(self, *args): + return _sim_services.VariableServerSession_write_data(self, *args) + + def write_stdio(self, stream, text): + return _sim_services.VariableServerSession_write_stdio(self, stream, text) + + def disconnect_references(self): + return _sim_services.VariableServerSession_disconnect_references(self) + + def get_next_tics(self): + return _sim_services.VariableServerSession_get_next_tics(self) + + def get_freeze_next_tics(self): + return _sim_services.VariableServerSession_get_freeze_next_tics(self) + + def freeze_init(self): + return _sim_services.VariableServerSession_freeze_init(self) + + def get_update_rate(self): + return _sim_services.VariableServerSession_get_update_rate(self) + + def pause_copy(self): + return _sim_services.VariableServerSession_pause_copy(self) + + def unpause_copy(self): + return _sim_services.VariableServerSession_unpause_copy(self) + + def get_write_mode(self): + return _sim_services.VariableServerSession_get_write_mode(self) + + def get_copy_mode(self): + return _sim_services.VariableServerSession_get_copy_mode(self) + + def var_add(self, *args): + return _sim_services.VariableServerSession_var_add(self, *args) + + def var_remove(self, in_name): + return _sim_services.VariableServerSession_var_remove(self, in_name) + + def var_units(self, var_name, units_name): + return _sim_services.VariableServerSession_var_units(self, var_name, units_name) + + def var_exists(self, in_name): + return _sim_services.VariableServerSession_var_exists(self, in_name) + + def var_send_once(self, in_name_list, num_vars): + return _sim_services.VariableServerSession_var_send_once(self, in_name_list, num_vars) + + def var_send(self): + return _sim_services.VariableServerSession_var_send(self) + + def var_clear(self): + return _sim_services.VariableServerSession_var_clear(self) + + def var_validate_address(self, on_off): + return _sim_services.VariableServerSession_var_validate_address(self, on_off) + + def var_debug(self, level): + return _sim_services.VariableServerSession_var_debug(self, level) + + def var_ascii(self): + return _sim_services.VariableServerSession_var_ascii(self) + + def var_binary(self): + return _sim_services.VariableServerSession_var_binary(self) + + def var_binary_nonames(self): + return _sim_services.VariableServerSession_var_binary_nonames(self) + + def var_set_copy_mode(self, mode): + return _sim_services.VariableServerSession_var_set_copy_mode(self, mode) + + def var_set_write_mode(self, mode): + return _sim_services.VariableServerSession_var_set_write_mode(self, mode) + + def var_sync(self, on_off): + return _sim_services.VariableServerSession_var_sync(self, on_off) + + def var_set_frame_multiple(self, mult): + return _sim_services.VariableServerSession_var_set_frame_multiple(self, mult) + + def var_set_frame_offset(self, offset): + return _sim_services.VariableServerSession_var_set_frame_offset(self, offset) + + def var_set_freeze_frame_multiple(self, mult): + return _sim_services.VariableServerSession_var_set_freeze_frame_multiple(self, mult) + + def var_set_freeze_frame_offset(self, offset): + return _sim_services.VariableServerSession_var_set_freeze_frame_offset(self, offset) + + def var_byteswap(self, on_off): + return _sim_services.VariableServerSession_var_byteswap(self, on_off) + + def set_log(self, on_off): + return _sim_services.VariableServerSession_set_log(self, on_off) + + def set_session_log(self, on_off): + return _sim_services.VariableServerSession_set_session_log(self, on_off) + + def set_info_message(self, on): + return _sim_services.VariableServerSession_set_info_message(self, on) + + def send_list_size(self): + return _sim_services.VariableServerSession_send_list_size(self) + + def send_sie_resource(self): + return _sim_services.VariableServerSession_send_sie_resource(self) + + def send_sie_class(self): + return _sim_services.VariableServerSession_send_sie_class(self) + + def send_sie_enum(self): + return _sim_services.VariableServerSession_send_sie_enum(self) + + def send_sie_top_level_objects(self): + return _sim_services.VariableServerSession_send_sie_top_level_objects(self) + + def send_file(self, file_name): + return _sim_services.VariableServerSession_send_file(self, file_name) + + def var_cycle(self, in_cycle): + return _sim_services.VariableServerSession_var_cycle(self, in_cycle) + + def var_exit(self): + return _sim_services.VariableServerSession_var_exit(self) +VariableServerSession_swigregister = _sim_services.VariableServerSession_swigregister +VariableServerSession_swigregister(VariableServerSession) + +class SystemInterface(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, SystemInterface, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, SystemInterface, name) + __repr__ = _swig_repr + + def socket(self, domain, type, protocol): + return _sim_services.SystemInterface_socket(self, domain, type, protocol) + + def setsockopt(self, socket, level, option_name, option_value, option_len): + return _sim_services.SystemInterface_setsockopt(self, socket, level, option_name, option_value, option_len) + + def bind(self, socket, address, address_len): + return _sim_services.SystemInterface_bind(self, socket, address, address_len) + + def getsockname(self, socket, address, address_len): + return _sim_services.SystemInterface_getsockname(self, socket, address, address_len) + + def listen(self, socket, backlog): + return _sim_services.SystemInterface_listen(self, socket, backlog) + + def select(self, nfds, readfds, writefds, errorfds, timeout): + return _sim_services.SystemInterface_select(self, nfds, readfds, writefds, errorfds, timeout) + + def close(self, fildes): + return _sim_services.SystemInterface_close(self, fildes) + + def getaddrinfo(self, hostname, servname, hints, res): + return _sim_services.SystemInterface_getaddrinfo(self, hostname, servname, hints, res) + + def fcntl(self, fildes, cmd, arg): + return _sim_services.SystemInterface_fcntl(self, fildes, cmd, arg) + + def shutdown(self, socket, how): + return _sim_services.SystemInterface_shutdown(self, socket, how) + + def accept(self, socket, address, address_len): + return _sim_services.SystemInterface_accept(self, socket, address, address_len) + + def send(self, socket, buffer, length, flags): + return _sim_services.SystemInterface_send(self, socket, buffer, length, flags) + + def sendto(self, socket, buffer, length, flags, dest_addr, dest_len): + return _sim_services.SystemInterface_sendto(self, socket, buffer, length, flags, dest_addr, dest_len) + + def recv(self, socket, buffer, length, flags): + return _sim_services.SystemInterface_recv(self, socket, buffer, length, flags) + + def recvfrom(self, socket, buffer, length, flags, address, address_len): + return _sim_services.SystemInterface_recvfrom(self, socket, buffer, length, flags, address, address_len) + + def inet_addr(self, cp): + return _sim_services.SystemInterface_inet_addr(self, cp) + + def __init__(self): + this = _sim_services.new_SystemInterface() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_SystemInterface + __del__ = lambda self: None +SystemInterface_swigregister = _sim_services.SystemInterface_swigregister +SystemInterface_swigregister(SystemInterface) + +class TCPConnection(ClientConnection): + __swig_setmethods__ = {} + for _s in [ClientConnection]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, TCPConnection, name, value) + __swig_getmethods__ = {} + for _s in [ClientConnection]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, TCPConnection, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_TCPConnection(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def start(self): + return _sim_services.TCPConnection_start(self) + + def write(self, *args): + return _sim_services.TCPConnection_write(self, *args) + + def read(self, *args): + return _sim_services.TCPConnection_read(self, *args) + + def disconnect(self): + return _sim_services.TCPConnection_disconnect(self) + + def isInitialized(self): + return _sim_services.TCPConnection_isInitialized(self) + + def setBlockMode(self, blocking): + return _sim_services.TCPConnection_setBlockMode(self, blocking) + + def restart(self): + return _sim_services.TCPConnection_restart(self) + + def getClientTag(self): + return _sim_services.TCPConnection_getClientTag(self) + + def setClientTag(self, tag): + return _sim_services.TCPConnection_setClientTag(self, tag) + + def getClientHostname(self): + return _sim_services.TCPConnection_getClientHostname(self) + + def getClientPort(self): + return _sim_services.TCPConnection_getClientPort(self) + __swig_destroy__ = _sim_services.delete_TCPConnection + __del__ = lambda self: None +TCPConnection_swigregister = _sim_services.TCPConnection_swigregister +TCPConnection_swigregister(TCPConnection) + +LISTENER_ERROR = _sim_services.LISTENER_ERROR +class TCPClientListener(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, TCPClientListener, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, TCPClientListener, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_TCPClientListener(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_TCPClientListener + __del__ = lambda self: None + + def initialize(self, *args): + return _sim_services.TCPClientListener_initialize(self, *args) + + def setBlockMode(self, blocking): + return _sim_services.TCPClientListener_setBlockMode(self, blocking) + + def checkForNewConnections(self): + return _sim_services.TCPClientListener_checkForNewConnections(self) + + def setUpNewConnection(self): + return _sim_services.TCPClientListener_setUpNewConnection(self) + + def disconnect(self): + return _sim_services.TCPClientListener_disconnect(self) + + def checkSocket(self): + return _sim_services.TCPClientListener_checkSocket(self) + + def validateSourceAddress(self, source_address): + return _sim_services.TCPClientListener_validateSourceAddress(self, source_address) + + def isInitialized(self): + return _sim_services.TCPClientListener_isInitialized(self) + + def restart(self): + return _sim_services.TCPClientListener_restart(self) + + def getHostname(self): + return _sim_services.TCPClientListener_getHostname(self) + + def getPort(self): + return _sim_services.TCPClientListener_getPort(self) +TCPClientListener_swigregister = _sim_services.TCPClientListener_swigregister +TCPClientListener_swigregister(TCPClientListener) + +CONNECTION_PENDING = _sim_services.CONNECTION_PENDING +CONNECTION_SUCCESS = _sim_services.CONNECTION_SUCCESS +CONNECTION_FAIL = _sim_services.CONNECTION_FAIL +class VariableServerSessionThread(SysThread): + __swig_setmethods__ = {} + for _s in [SysThread]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerSessionThread, name, value) + __swig_getmethods__ = {} + for _s in [SysThread]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, VariableServerSessionThread, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_VariableServerSessionThread(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VariableServerSessionThread + __del__ = lambda self: None + if _newclass: + set_vs_ptr = staticmethod(_sim_services.VariableServerSessionThread_set_vs_ptr) + else: + set_vs_ptr = _sim_services.VariableServerSessionThread_set_vs_ptr + + def set_client_tag(self, tag): + return _sim_services.VariableServerSessionThread_set_client_tag(self, tag) + + def set_connection(self, in_connection): + return _sim_services.VariableServerSessionThread_set_connection(self, in_connection) + + def wait_for_accept(self): + return _sim_services.VariableServerSessionThread_wait_for_accept(self) + + def thread_body(self): + return _sim_services.VariableServerSessionThread_thread_body(self) + + def get_vs(self): + return _sim_services.VariableServerSessionThread_get_vs(self) + + def preload_checkpoint(self): + return _sim_services.VariableServerSessionThread_preload_checkpoint(self) + + def restart(self): + return _sim_services.VariableServerSessionThread_restart(self) + + def cleanup(self): + return _sim_services.VariableServerSessionThread_cleanup(self) +VariableServerSessionThread_swigregister = _sim_services.VariableServerSessionThread_swigregister +VariableServerSessionThread_swigregister(VariableServerSessionThread) + +def VariableServerSessionThread_set_vs_ptr(in_vs): + return _sim_services.VariableServerSessionThread_set_vs_ptr(in_vs) +VariableServerSessionThread_set_vs_ptr = _sim_services.VariableServerSessionThread_set_vs_ptr + + +def __lshift__(*args): + return _sim_services.__lshift__(*args) +__lshift__ = _sim_services.__lshift__ +class UDPConnection(ClientConnection): + __swig_setmethods__ = {} + for _s in [ClientConnection]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, UDPConnection, name, value) + __swig_getmethods__ = {} + for _s in [ClientConnection]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, UDPConnection, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_UDPConnection(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + + def start(self): + return _sim_services.UDPConnection_start(self) + + def write(self, *args): + return _sim_services.UDPConnection_write(self, *args) + + def read(self, *args): + return _sim_services.UDPConnection_read(self, *args) + + def disconnect(self): + return _sim_services.UDPConnection_disconnect(self) + + def isInitialized(self): + return _sim_services.UDPConnection_isInitialized(self) + + def setBlockMode(self, block_mode): + return _sim_services.UDPConnection_setBlockMode(self, block_mode) + + def restart(self): + return _sim_services.UDPConnection_restart(self) + + def getClientTag(self): + return _sim_services.UDPConnection_getClientTag(self) + + def setClientTag(self, tag): + return _sim_services.UDPConnection_setClientTag(self, tag) + + def initialize(self, hostname, port): + return _sim_services.UDPConnection_initialize(self, hostname, port) + + def getPort(self): + return _sim_services.UDPConnection_getPort(self) + + def getHostname(self): + return _sim_services.UDPConnection_getHostname(self) + + def getClientHostname(self): + return _sim_services.UDPConnection_getClientHostname(self) + + def getClientPort(self): + return _sim_services.UDPConnection_getClientPort(self) + __swig_destroy__ = _sim_services.delete_UDPConnection + __del__ = lambda self: None +UDPConnection_swigregister = _sim_services.UDPConnection_swigregister +UDPConnection_swigregister(UDPConnection) + +class MulticastGroup(UDPConnection): + __swig_setmethods__ = {} + for _s in [UDPConnection]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, MulticastGroup, name, value) + __swig_getmethods__ = {} + for _s in [UDPConnection]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, MulticastGroup, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_MulticastGroup(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_MulticastGroup + __del__ = lambda self: None + + def initialize_with_receiving(self, local_addr, mcast_addr, port): + return _sim_services.MulticastGroup_initialize_with_receiving(self, local_addr, mcast_addr, port) + + def initialize(self): + return _sim_services.MulticastGroup_initialize(self) + + def broadcast(self, message): + return _sim_services.MulticastGroup_broadcast(self, message) + + def addAddress(self, addr, port): + return _sim_services.MulticastGroup_addAddress(self, addr, port) + + def write(self, *args): + return _sim_services.MulticastGroup_write(self, *args) + + def read(self, *args): + return _sim_services.MulticastGroup_read(self, *args) + + def disconnect(self): + return _sim_services.MulticastGroup_disconnect(self) + + def isInitialized(self): + return _sim_services.MulticastGroup_isInitialized(self) + + def restart(self): + return _sim_services.MulticastGroup_restart(self) + + def getClientHostname(self): + return _sim_services.MulticastGroup_getClientHostname(self) + + def getClientPort(self): + return _sim_services.MulticastGroup_getClientPort(self) +MulticastGroup_swigregister = _sim_services.MulticastGroup_swigregister +MulticastGroup_swigregister(MulticastGroup) + +class VariableServerListenThread(SysThread): + __swig_setmethods__ = {} + for _s in [SysThread]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerListenThread, name, value) + __swig_getmethods__ = {} + for _s in [SysThread]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, VariableServerListenThread, name) + __repr__ = _swig_repr + + def __init__(self, *args): + this = _sim_services.new_VariableServerListenThread(*args) + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VariableServerListenThread + __del__ = lambda self: None + + def get_hostname(self): + return _sim_services.VariableServerListenThread_get_hostname(self) + + def get_port(self): + return _sim_services.VariableServerListenThread_get_port(self) + + def set_port(self, in_port): + return _sim_services.VariableServerListenThread_set_port(self, in_port) + + def get_user_tag(self): + return _sim_services.VariableServerListenThread_get_user_tag(self) + + def get_user_tag_ref(self): + return _sim_services.VariableServerListenThread_get_user_tag_ref(self) + + def set_user_tag(self, in_tag): + return _sim_services.VariableServerListenThread_set_user_tag(self, in_tag) + + def set_source_address(self, address): + return _sim_services.VariableServerListenThread_set_source_address(self, address) + + def get_source_address(self): + return _sim_services.VariableServerListenThread_get_source_address(self) + + def get_broadcast(self): + return _sim_services.VariableServerListenThread_get_broadcast(self) + + def set_broadcast(self, in_broadcast): + return _sim_services.VariableServerListenThread_set_broadcast(self, in_broadcast) + + def init_listen_device(self): + return _sim_services.VariableServerListenThread_init_listen_device(self) + + def check_and_move_listen_device(self): + return _sim_services.VariableServerListenThread_check_and_move_listen_device(self) + + def thread_body(self): + return _sim_services.VariableServerListenThread_thread_body(self) + + def restart(self): + return _sim_services.VariableServerListenThread_restart(self) + + def pause_listening(self): + return _sim_services.VariableServerListenThread_pause_listening(self) + + def restart_listening(self): + return _sim_services.VariableServerListenThread_restart_listening(self) + + def set_multicast_group(self, group): + return _sim_services.VariableServerListenThread_set_multicast_group(self, group) + + def dump(self, *args): + return _sim_services.VariableServerListenThread_dump(self, *args) +VariableServerListenThread_swigregister = _sim_services.VariableServerListenThread_swigregister +VariableServerListenThread_swigregister(VariableServerListenThread) + +class VariableServer(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServer, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, VariableServer, name) + __repr__ = _swig_repr + + def __init__(self): + this = _sim_services.new_VariableServer() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_VariableServer + __del__ = lambda self: None + + def default_data(self): + return _sim_services.VariableServer_default_data(self) + + def init(self): + return _sim_services.VariableServer_init(self) + + def restart(self): + return _sim_services.VariableServer_restart(self) + + def freeze_init(self): + return _sim_services.VariableServer_freeze_init(self) + + def shutdown(self): + return _sim_services.VariableServer_shutdown(self) + + def get_next_sync_call_time(self): + return _sim_services.VariableServer_get_next_sync_call_time(self) + + def get_next_freeze_call_time(self): + return _sim_services.VariableServer_get_next_freeze_call_time(self) + + def copy_and_write_top(self): + return _sim_services.VariableServer_copy_and_write_top(self) + + def copy_and_write_scheduled(self): + return _sim_services.VariableServer_copy_and_write_scheduled(self) + + def copy_and_write_freeze_scheduled(self): + return _sim_services.VariableServer_copy_and_write_freeze_scheduled(self) + + def copy_and_write_freeze(self): + return _sim_services.VariableServer_copy_and_write_freeze(self) + + def add_vst(self, thread_id, in_vst): + return _sim_services.VariableServer_add_vst(self, thread_id, in_vst) + + def add_session(self, thread_id, in_session): + return _sim_services.VariableServer_add_session(self, thread_id, in_session) + + def get_vst(self, thread_id): + return _sim_services.VariableServer_get_vst(self, thread_id) + + def get_session(self, thread_id): + return _sim_services.VariableServer_get_session(self, thread_id) + + def delete_vst(self, thread_id): + return _sim_services.VariableServer_delete_vst(self, thread_id) + + def delete_session(self, thread_id): + return _sim_services.VariableServer_delete_session(self, thread_id) + + def get_hostname(self): + return _sim_services.VariableServer_get_hostname(self) + + def get_listen_thread(self): + return _sim_services.VariableServer_get_listen_thread(self) + + def set_enabled(self, on_off): + return _sim_services.VariableServer_set_enabled(self, on_off) + + def get_enabled(self): + return _sim_services.VariableServer_get_enabled(self) + + def get_info_msg(self): + return _sim_services.VariableServer_get_info_msg(self) + + def get_log(self): + return _sim_services.VariableServer_get_log(self) + + def get_session_log(self): + return _sim_services.VariableServer_get_session_log(self) + + def set_var_server_info_msg_on(self): + return _sim_services.VariableServer_set_var_server_info_msg_on(self) + + def set_var_server_info_msg_off(self): + return _sim_services.VariableServer_set_var_server_info_msg_off(self) + + def set_var_server_log_on(self): + return _sim_services.VariableServer_set_var_server_log_on(self) + + def set_var_server_log_off(self): + return _sim_services.VariableServer_set_var_server_log_off(self) + + def set_var_server_session_log_on(self): + return _sim_services.VariableServer_set_var_server_session_log_on(self) + + def set_var_server_session_log_off(self): + return _sim_services.VariableServer_set_var_server_session_log_off(self) + + def create_tcp_socket(self, source_address, port): + return _sim_services.VariableServer_create_tcp_socket(self, source_address, port) + + def create_udp_socket(self, source_address, port): + return _sim_services.VariableServer_create_udp_socket(self, source_address, port) + + def create_multicast_socket(self, mcast_address, source_address, port): + return _sim_services.VariableServer_create_multicast_socket(self, mcast_address, source_address, port) + + def suspendPreCheckpointReload(self): + return _sim_services.VariableServer_suspendPreCheckpointReload(self) + + def resumePostCheckpointReload(self): + return _sim_services.VariableServer_resumePostCheckpointReload(self) + + def set_copy_data_job(self, arg2): + return _sim_services.VariableServer_set_copy_data_job(self, arg2) + + def set_copy_and_write_freeze_job(self, arg2): + return _sim_services.VariableServer_set_copy_and_write_freeze_job(self, arg2) +VariableServer_swigregister = _sim_services.VariableServer_swigregister +VariableServer_swigregister(VariableServer) + + +def var_server_get_var_server(): + return _sim_services.var_server_get_var_server() +var_server_get_var_server = _sim_services.var_server_get_var_server + +def var_add(*args): + return _sim_services.var_add(*args) +var_add = _sim_services.var_add + +def var_remove(in_name): + return _sim_services.var_remove(in_name) +var_remove = _sim_services.var_remove + +def var_units(var_name, units_name): + return _sim_services.var_units(var_name, units_name) +var_units = _sim_services.var_units + +def var_exists(in_name): + return _sim_services.var_exists(in_name) +var_exists = _sim_services.var_exists + +def var_send_once(*args): + return _sim_services.var_send_once(*args) +var_send_once = _sim_services.var_send_once + +def var_send(): + return _sim_services.var_send() +var_send = _sim_services.var_send + +def var_clear(): + return _sim_services.var_clear() +var_clear = _sim_services.var_clear + +def var_cycle(in_rate): + return _sim_services.var_cycle(in_rate) +var_cycle = _sim_services.var_cycle + +def var_pause(): + return _sim_services.var_pause() +var_pause = _sim_services.var_pause + +def var_unpause(): + return _sim_services.var_unpause() +var_unpause = _sim_services.var_unpause + +def var_exit(): + return _sim_services.var_exit() +var_exit = _sim_services.var_exit + +def var_write_stdio(stream, text): + return _sim_services.var_write_stdio(stream, text) +var_write_stdio = _sim_services.var_write_stdio + +def var_set_client_tag(text): + return _sim_services.var_set_client_tag(text) +var_set_client_tag = _sim_services.var_set_client_tag + +def var_debug(level): + return _sim_services.var_debug(level) +var_debug = _sim_services.var_debug + +def var_ascii(): + return _sim_services.var_ascii() +var_ascii = _sim_services.var_ascii + +def var_binary(): + return _sim_services.var_binary() +var_binary = _sim_services.var_binary + +def var_binary_nonames(): + return _sim_services.var_binary_nonames() +var_binary_nonames = _sim_services.var_binary_nonames + +def var_validate_address(on_off): + return _sim_services.var_validate_address(on_off) +var_validate_address = _sim_services.var_validate_address + +def var_set_copy_mode(mode): + return _sim_services.var_set_copy_mode(mode) +var_set_copy_mode = _sim_services.var_set_copy_mode + +def var_set_write_mode(mode): + return _sim_services.var_set_write_mode(mode) +var_set_write_mode = _sim_services.var_set_write_mode + +def var_set_send_stdio(mode): + return _sim_services.var_set_send_stdio(mode) +var_set_send_stdio = _sim_services.var_set_send_stdio + +def var_sync(mode): + return _sim_services.var_sync(mode) +var_sync = _sim_services.var_sync + +def var_set_frame_multiple(mult): + return _sim_services.var_set_frame_multiple(mult) +var_set_frame_multiple = _sim_services.var_set_frame_multiple + +def var_set_frame_offset(offset): + return _sim_services.var_set_frame_offset(offset) +var_set_frame_offset = _sim_services.var_set_frame_offset + +def var_set_freeze_frame_multiple(mult): + return _sim_services.var_set_freeze_frame_multiple(mult) +var_set_freeze_frame_multiple = _sim_services.var_set_freeze_frame_multiple + +def var_set_freeze_frame_offset(offset): + return _sim_services.var_set_freeze_frame_offset(offset) +var_set_freeze_frame_offset = _sim_services.var_set_freeze_frame_offset + +def var_byteswap(on_off): + return _sim_services.var_byteswap(on_off) +var_byteswap = _sim_services.var_byteswap + +def var_send_list_size(): + return _sim_services.var_send_list_size() +var_send_list_size = _sim_services.var_send_list_size + +def send_sie_resource(): + return _sim_services.send_sie_resource() +send_sie_resource = _sim_services.send_sie_resource + +def send_sie_class(): + return _sim_services.send_sie_class() +send_sie_class = _sim_services.send_sie_class + +def send_sie_enum(): + return _sim_services.send_sie_enum() +send_sie_enum = _sim_services.send_sie_enum + +def send_sie_top_level_objects(): + return _sim_services.send_sie_top_level_objects() +send_sie_top_level_objects = _sim_services.send_sie_top_level_objects + +def send_file(file_name): + return _sim_services.send_file(file_name) +send_file = _sim_services.send_file + +def var_set(*args): + return _sim_services.var_set(*args) +var_set = _sim_services.var_set + +def var_server_log_on(): + return _sim_services.var_server_log_on() +var_server_log_on = _sim_services.var_server_log_on + +def var_server_log_off(): + return _sim_services.var_server_log_off() +var_server_log_off = _sim_services.var_server_log_off + +def var_server_list_connections(): + return _sim_services.var_server_list_connections() +var_server_list_connections = _sim_services.var_server_list_connections + +def var_server_get_hostname(): + return _sim_services.var_server_get_hostname() +var_server_get_hostname = _sim_services.var_server_get_hostname + +def var_server_get_port(): + return _sim_services.var_server_get_port() +var_server_get_port = _sim_services.var_server_get_port + +def var_server_set_port(port): + return _sim_services.var_server_set_port(port) +var_server_set_port = _sim_services.var_server_set_port + +def var_server_set_source_address(address): + return _sim_services.var_server_set_source_address(address) +var_server_set_source_address = _sim_services.var_server_set_source_address + +def var_server_get_user_tag(): + return _sim_services.var_server_get_user_tag() +var_server_get_user_tag = _sim_services.var_server_get_user_tag + +def var_server_set_user_tag(tag): + return _sim_services.var_server_set_user_tag(tag) +var_server_set_user_tag = _sim_services.var_server_set_user_tag + +def var_server_get_enabled(): + return _sim_services.var_server_get_enabled() +var_server_get_enabled = _sim_services.var_server_get_enabled + +def var_server_set_enabled(on_off): + return _sim_services.var_server_set_enabled(on_off) +var_server_set_enabled = _sim_services.var_server_set_enabled + +def var_server_create_tcp_socket(address, port): + return _sim_services.var_server_create_tcp_socket(address, port) +var_server_create_tcp_socket = _sim_services.var_server_create_tcp_socket + +def var_server_create_udp_socket(address, port): + return _sim_services.var_server_create_udp_socket(address, port) +var_server_create_udp_socket = _sim_services.var_server_create_udp_socket + +def var_server_create_multicast_socket(mcast_address, address, port): + return _sim_services.var_server_create_multicast_socket(mcast_address, address, port) +var_server_create_multicast_socket = _sim_services.var_server_create_multicast_socket + +def vval_char(V): + return _sim_services.vval_char(V) +vval_char = _sim_services.vval_char + +def vval_short(V): + return _sim_services.vval_short(V) +vval_short = _sim_services.vval_short + +def vval_int(V): + return _sim_services.vval_int(V) +vval_int = _sim_services.vval_int + +def vval_long(V): + return _sim_services.vval_long(V) +vval_long = _sim_services.vval_long + +def vval_longlong(V): + return _sim_services.vval_longlong(V) +vval_longlong = _sim_services.vval_longlong + +def vval_float(V): + return _sim_services.vval_float(V) +vval_float = _sim_services.vval_float + +def vval_double(V): + return _sim_services.vval_double(V) +vval_double = _sim_services.vval_double + +def vval_string(V): + return _sim_services.vval_string(V) +vval_string = _sim_services.vval_string + +def vval_filep(V): + return _sim_services.vval_filep(V) +vval_filep = _sim_services.vval_filep + +def vval_voidp(V): + return _sim_services.vval_voidp(V) +vval_voidp = _sim_services.vval_voidp + +def delete_v_tree(v_tree): + return _sim_services.delete_v_tree(v_tree) +delete_v_tree = _sim_services.delete_v_tree +Off = _sim_services.Off +On = _sim_services.On +No = _sim_services.No +Yes = _sim_services.Yes +Disconnect = _sim_services.Disconnect +Connect = _sim_services.Connect +Inactive = _sim_services.Inactive +Active = _sim_services.Active +Stop = _sim_services.Stop +Go = _sim_services.Go +Low = _sim_services.Low +High = _sim_services.High +Disable = _sim_services.Disable +Enable = _sim_services.Enable +TRUE = _sim_services.TRUE +FALSE = _sim_services.FALSE +Open = _sim_services.Open +Closed = _sim_services.Closed +OFF = _sim_services.OFF +ON = _sim_services.ON +NO = _sim_services.NO +YES = _sim_services.YES +INACTIVE = _sim_services.INACTIVE +ACTIVE = _sim_services.ACTIVE +BACKWARD = _sim_services.BACKWARD +FORWARD = _sim_services.FORWARD +BAD = _sim_services.BAD +GOOD = _sim_services.GOOD +class UdUnits(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, UdUnits, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, UdUnits, name) + __repr__ = _swig_repr + if _newclass: + get_u_system = staticmethod(_sim_services.UdUnits_get_u_system) + else: + get_u_system = _sim_services.UdUnits_get_u_system + + def read_default_xml(self): + return _sim_services.UdUnits_read_default_xml(self) + + def read_user_xml(self, arg2): + return _sim_services.UdUnits_read_user_xml(self, arg2) + + def __init__(self): + this = _sim_services.new_UdUnits() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _sim_services.delete_UdUnits + __del__ = lambda self: None +UdUnits_swigregister = _sim_services.UdUnits_swigregister +UdUnits_swigregister(UdUnits) + +def UdUnits_get_u_system(): + return _sim_services.UdUnits_get_u_system() +UdUnits_get_u_system = _sim_services.UdUnits_get_u_system + +class IntegratorConstructorFactory(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorConstructorFactory, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, IntegratorConstructorFactory, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined") + __repr__ = _swig_repr + if _newclass: + create = staticmethod(_sim_services.IntegratorConstructorFactory_create) + else: + create = _sim_services.IntegratorConstructorFactory_create +IntegratorConstructorFactory_swigregister = _sim_services.IntegratorConstructorFactory_swigregister +IntegratorConstructorFactory_swigregister(IntegratorConstructorFactory) + +def IntegratorConstructorFactory_create(type): + return _sim_services.IntegratorConstructorFactory_create(type) +IntegratorConstructorFactory_create = _sim_services.IntegratorConstructorFactory_create + +class IntegrableObject(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, IntegrableObject, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, IntegrableObject, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + __swig_destroy__ = _sim_services.delete_IntegrableObject + __del__ = lambda self: None + + def create_integrators(self, generator, controls, time_if): + return _sim_services.IntegrableObject_create_integrators(self, generator, controls, time_if) + + def destroy_integrators(self): + return _sim_services.IntegrableObject_destroy_integrators(self) + + def reset_integrators(self): + return _sim_services.IntegrableObject_reset_integrators(self) + + def integrate(self, dyn_dt, target_stage): + return _sim_services.IntegrableObject_integrate(self, dyn_dt, target_stage) + + def set_integration_group(self, integ_group_in): + return _sim_services.IntegrableObject_set_integration_group(self, integ_group_in) + + def clear_integration_group(self): + return _sim_services.IntegrableObject_clear_integration_group(self) + + def get_integration_group(self): + return _sim_services.IntegrableObject_get_integration_group(self) +IntegrableObject_swigregister = _sim_services.IntegrableObject_swigregister +IntegrableObject_swigregister(IntegrableObject) + + +import os +import linecache +import re + +curr_dir = os.getcwd() +exclude_dir = os.getcwd() + "/trick" + +def traceit(frame, event, arg): + if event == "line": + lineno = frame.f_lineno + filename = frame.f_code.co_filename + if ( not filename.startswith(exclude_dir) and not filename.startswith("/usr") and not filename.startswith("/opt") and not filename.startswith("<") and not filename.startswith(".trick/") ): + if (filename.endswith(".pyc") or + filename.endswith(".pyo")): + filename = filename[:-1] + line = linecache.getline(filename, lineno) + print (filename,":",lineno,": ",line.rstrip()) + return traceit + +# This file is compatible with both classic and new-style classes. + + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py new file mode 100644 index 000000000..8ef4370ba --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py @@ -0,0 +1,238 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.12 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_swig_double')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_swig_double') + _swig_double = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_swig_double', [dirname(__file__)]) + except ImportError: + import _swig_double + return _swig_double + try: + _mod = imp.load_module('_swig_double', fp, pathname, description) + finally: + if fp is not None: + fp.close() + return _mod + _swig_double = swig_import_helper() + del swig_import_helper +else: + import _swig_double +del _swig_python_version_info + +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr(self, class_type, name): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except __builtin__.Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except __builtin__.Exception: + class _object: + pass + _newclass = 0 + +class swig_double(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, swig_double, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, swig_double, name) + __swig_setmethods__["units"] = _swig_double.swig_double_units_set + __swig_getmethods__["units"] = _swig_double.swig_double_units_get + if _newclass: + units = _swig_property(_swig_double.swig_double_units_get, _swig_double.swig_double_units_set) + + def __str__(self): + return _swig_double.swig_double___str__(self) + + def __repr__(self): + return _swig_double.swig_double___repr__(self) + + def __add__(self, obj1): + return _swig_double.swig_double___add__(self, obj1) + + def __sub__(self, obj1): + return _swig_double.swig_double___sub__(self, obj1) + + def __mul__(self, obj1): + return _swig_double.swig_double___mul__(self, obj1) + + def __div__(self, obj1): + return _swig_double.swig_double___div__(self, obj1) + + def __truediv__(self, obj1): + return _swig_double.swig_double___truediv__(self, obj1) + + def __floordiv__(self, obj1): + return _swig_double.swig_double___floordiv__(self, obj1) + + def __mod__(self, obj1): + return _swig_double.swig_double___mod__(self, obj1) + + def __pow__(self, obj1): + return _swig_double.swig_double___pow__(self, obj1) + + def __radd__(self, obj1): + return _swig_double.swig_double___radd__(self, obj1) + + def __rsub__(self, obj1): + return _swig_double.swig_double___rsub__(self, obj1) + + def __rmul__(self, obj1): + return _swig_double.swig_double___rmul__(self, obj1) + + def __rdiv__(self, obj1): + return _swig_double.swig_double___rdiv__(self, obj1) + + def __rtruediv__(self, obj1): + return _swig_double.swig_double___rtruediv__(self, obj1) + + def __rfloordiv__(self, obj1): + return _swig_double.swig_double___rfloordiv__(self, obj1) + + def __rmod__(self, obj1): + return _swig_double.swig_double___rmod__(self, obj1) + + def __rpow__(self, obj1): + return _swig_double.swig_double___rpow__(self, obj1) + + def __iadd__(self, obj1): + return _swig_double.swig_double___iadd__(self, obj1) + + def __isub__(self, obj1): + return _swig_double.swig_double___isub__(self, obj1) + + def __imul__(self, obj1): + return _swig_double.swig_double___imul__(self, obj1) + + def __idiv__(self, obj1): + return _swig_double.swig_double___idiv__(self, obj1) + + def __itruediv__(self, obj1): + return _swig_double.swig_double___itruediv__(self, obj1) + + def __ifloordiv__(self, obj1): + return _swig_double.swig_double___ifloordiv__(self, obj1) + + def __imod__(self, obj1): + return _swig_double.swig_double___imod__(self, obj1) + + def __ipow__(self, obj1): + return _swig_double.swig_double___ipow__(self, obj1) + + def __lt__(self, obj1): + return _swig_double.swig_double___lt__(self, obj1) + + def __le__(self, obj1): + return _swig_double.swig_double___le__(self, obj1) + + def __eq__(self, obj1): + return _swig_double.swig_double___eq__(self, obj1) + + def __ne__(self, obj1): + return _swig_double.swig_double___ne__(self, obj1) + + def __gt__(self, obj1): + return _swig_double.swig_double___gt__(self, obj1) + + def __ge__(self, obj1): + return _swig_double.swig_double___ge__(self, obj1) + + def __neg__(self): + return _swig_double.swig_double___neg__(self) + + def __pos__(self): + return _swig_double.swig_double___pos__(self) + + def __abs__(self): + return _swig_double.swig_double___abs__(self) + + def __int__(self): + return _swig_double.swig_double___int__(self) + + def __long__(self): + return _swig_double.swig_double___long__(self) + + def __float__(self): + return _swig_double.swig_double___float__(self) + + def __len__(self): + return _swig_double.swig_double___len__(self) + + def __init__(self): + this = _swig_double.new_swig_double() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _swig_double.delete_swig_double + __del__ = lambda self: None +swig_double_swigregister = _swig_double.swig_double_swigregister +swig_double_swigregister(swig_double) + +# This file is compatible with both classic and new-style classes. + + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py new file mode 100644 index 000000000..ae70cf10e --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py @@ -0,0 +1,301 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.12 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_swig_int')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_swig_int') + _swig_int = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_swig_int', [dirname(__file__)]) + except ImportError: + import _swig_int + return _swig_int + try: + _mod = imp.load_module('_swig_int', fp, pathname, description) + finally: + if fp is not None: + fp.close() + return _mod + _swig_int = swig_import_helper() + del swig_import_helper +else: + import _swig_int +del _swig_python_version_info + +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr(self, class_type, name): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except __builtin__.Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except __builtin__.Exception: + class _object: + pass + _newclass = 0 + +class swig_int(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, swig_int, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, swig_int, name) + __swig_setmethods__["units"] = _swig_int.swig_int_units_set + __swig_getmethods__["units"] = _swig_int.swig_int_units_get + if _newclass: + units = _swig_property(_swig_int.swig_int_units_get, _swig_int.swig_int_units_set) + + def __str__(self): + return _swig_int.swig_int___str__(self) + + def __repr__(self): + return _swig_int.swig_int___repr__(self) + + def __add__(self, obj1): + return _swig_int.swig_int___add__(self, obj1) + + def __sub__(self, obj1): + return _swig_int.swig_int___sub__(self, obj1) + + def __mul__(self, obj1): + return _swig_int.swig_int___mul__(self, obj1) + + def __div__(self, obj1): + return _swig_int.swig_int___div__(self, obj1) + + def __truediv__(self, obj1): + return _swig_int.swig_int___truediv__(self, obj1) + + def __floordiv__(self, obj1): + return _swig_int.swig_int___floordiv__(self, obj1) + + def __mod__(self, obj1): + return _swig_int.swig_int___mod__(self, obj1) + + def __pow__(self, obj1): + return _swig_int.swig_int___pow__(self, obj1) + + def __lshift__(self, obj1): + return _swig_int.swig_int___lshift__(self, obj1) + + def __rshift__(self, obj1): + return _swig_int.swig_int___rshift__(self, obj1) + + def __and__(self, obj1): + return _swig_int.swig_int___and__(self, obj1) + + def __xor__(self, obj1): + return _swig_int.swig_int___xor__(self, obj1) + + def __or__(self, obj1): + return _swig_int.swig_int___or__(self, obj1) + + def __radd__(self, obj1): + return _swig_int.swig_int___radd__(self, obj1) + + def __rsub__(self, obj1): + return _swig_int.swig_int___rsub__(self, obj1) + + def __rmul__(self, obj1): + return _swig_int.swig_int___rmul__(self, obj1) + + def __rdiv__(self, obj1): + return _swig_int.swig_int___rdiv__(self, obj1) + + def __rtruediv__(self, obj1): + return _swig_int.swig_int___rtruediv__(self, obj1) + + def __rfloordiv__(self, obj1): + return _swig_int.swig_int___rfloordiv__(self, obj1) + + def __rmod__(self, obj1): + return _swig_int.swig_int___rmod__(self, obj1) + + def __rpow__(self, obj1): + return _swig_int.swig_int___rpow__(self, obj1) + + def __rlshift__(self, obj1): + return _swig_int.swig_int___rlshift__(self, obj1) + + def __rrshift__(self, obj1): + return _swig_int.swig_int___rrshift__(self, obj1) + + def __rand__(self, obj1): + return _swig_int.swig_int___rand__(self, obj1) + + def __rxor__(self, obj1): + return _swig_int.swig_int___rxor__(self, obj1) + + def __ror__(self, obj1): + return _swig_int.swig_int___ror__(self, obj1) + + def __iadd__(self, obj1): + return _swig_int.swig_int___iadd__(self, obj1) + + def __isub__(self, obj1): + return _swig_int.swig_int___isub__(self, obj1) + + def __imul__(self, obj1): + return _swig_int.swig_int___imul__(self, obj1) + + def __idiv__(self, obj1): + return _swig_int.swig_int___idiv__(self, obj1) + + def __itruediv__(self, obj1): + return _swig_int.swig_int___itruediv__(self, obj1) + + def __ifloordiv__(self, obj1): + return _swig_int.swig_int___ifloordiv__(self, obj1) + + def __imod__(self, obj1): + return _swig_int.swig_int___imod__(self, obj1) + + def __ipow__(self, obj1): + return _swig_int.swig_int___ipow__(self, obj1) + + def __ilshift__(self, obj1): + return _swig_int.swig_int___ilshift__(self, obj1) + + def __irshift__(self, obj1): + return _swig_int.swig_int___irshift__(self, obj1) + + def __iand__(self, obj1): + return _swig_int.swig_int___iand__(self, obj1) + + def __ixor__(self, obj1): + return _swig_int.swig_int___ixor__(self, obj1) + + def __ior__(self, obj1): + return _swig_int.swig_int___ior__(self, obj1) + + def __lt__(self, obj1): + return _swig_int.swig_int___lt__(self, obj1) + + def __le__(self, obj1): + return _swig_int.swig_int___le__(self, obj1) + + def __eq__(self, obj1): + return _swig_int.swig_int___eq__(self, obj1) + + def __ne__(self, obj1): + return _swig_int.swig_int___ne__(self, obj1) + + def __gt__(self, obj1): + return _swig_int.swig_int___gt__(self, obj1) + + def __ge__(self, obj1): + return _swig_int.swig_int___ge__(self, obj1) + + def __neg__(self): + return _swig_int.swig_int___neg__(self) + + def __pos__(self): + return _swig_int.swig_int___pos__(self) + + def __abs__(self): + return _swig_int.swig_int___abs__(self) + + def __invert__(self): + return _swig_int.swig_int___invert__(self) + + def __nonzero__(self): + return _swig_int.swig_int___nonzero__(self) + + def __int__(self): + return _swig_int.swig_int___int__(self) + + def __long__(self): + return _swig_int.swig_int___long__(self) + + def __float__(self): + return _swig_int.swig_int___float__(self) + + def __oct__(self): + return _swig_int.swig_int___oct__(self) + + def __hex__(self): + return _swig_int.swig_int___hex__(self) + + def __len__(self): + return _swig_int.swig_int___len__(self) + + def __index__(self): + return _swig_int.swig_int___index__(self) + + def __bool__(self): + return _swig_int.swig_int___bool__(self) + + def __init__(self): + this = _swig_int.new_swig_int() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _swig_int.delete_swig_int + __del__ = lambda self: None +swig_int_swigregister = _swig_int.swig_int_swigregister +swig_int_swigregister(swig_int) + +# This file is compatible with both classic and new-style classes. + + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py new file mode 100644 index 000000000..7919a9798 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py @@ -0,0 +1,132 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.12 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_swig_ref')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_swig_ref') + _swig_ref = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_swig_ref', [dirname(__file__)]) + except ImportError: + import _swig_ref + return _swig_ref + try: + _mod = imp.load_module('_swig_ref', fp, pathname, description) + finally: + if fp is not None: + fp.close() + return _mod + _swig_ref = swig_import_helper() + del swig_import_helper +else: + import _swig_ref +del _swig_python_version_info + +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr(self, class_type, name): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except __builtin__.Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except __builtin__.Exception: + class _object: + pass + _newclass = 0 + +class swig_ref(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, swig_ref, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, swig_ref, name) + + def __getitem__(self, index): + return _swig_ref.swig_ref___getitem__(self, index) + + def __setitem__(self, index, obj1): + return _swig_ref.swig_ref___setitem__(self, index, obj1) + + def __str__(self): + return _swig_ref.swig_ref___str__(self) + + def __repr__(self): + return _swig_ref.swig_ref___repr__(self) + + def __len__(self): + return _swig_ref.swig_ref___len__(self) + + def __init__(self): + this = _swig_ref.new_swig_ref() + try: + self.this.append(this) + except __builtin__.Exception: + self.this = this + __swig_destroy__ = _swig_ref.delete_swig_ref + __del__ = lambda self: None +swig_ref_swigregister = _swig_ref.swig_ref_swigregister +swig_ref_swigregister(swig_ref) + +# This file is compatible with both classic and new-style classes. + + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/top.py b/trick_sims/SIM_singlerigidbody/sims/.trick/top.py new file mode 100644 index 000000000..eb1529280 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/top.py @@ -0,0 +1,109 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.12 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + +from sys import version_info as _swig_python_version_info +if _swig_python_version_info >= (2, 7, 0): + def swig_import_helper(): + import importlib + pkg = __name__.rpartition('.')[0] + mname = '.'.join((pkg, '_top')).lstrip('.') + try: + return importlib.import_module(mname) + except ImportError: + return importlib.import_module('_top') + _top = swig_import_helper() + del swig_import_helper +elif _swig_python_version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_top', [dirname(__file__)]) + except ImportError: + import _top + return _top + try: + _mod = imp.load_module('_top', fp, pathname, description) + finally: + if fp is not None: + fp.close() + return _mod + _top = swig_import_helper() + del swig_import_helper +else: + import _top +del _swig_python_version_info + +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + +try: + import builtins as __builtin__ +except ImportError: + import __builtin__ + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + if _newclass: + object.__setattr__(self, name, value) + else: + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr(self, class_type, name): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except __builtin__.Exception: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except __builtin__.Exception: + class _object: + pass + _newclass = 0 + +import m2ddd17f9284f93dc40b8a127bd142ae5 +import sim_services +import me18dda184e7a3a5300b5efa2b558f756 +# This file is compatible with both classic and new-style classes. + +cvar = _top.cvar +trick_sys = cvar.trick_sys +trick_message = cvar.trick_message +trick_vs = cvar.trick_vs +trick_data_record = cvar.trick_data_record +trick_frame_log = cvar.trick_frame_log + diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py b/trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py new file mode 100644 index 000000000..64c304c75 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py @@ -0,0 +1,72 @@ + +import math +import trick + +def TRICK_EXPECT_TRUE( a , test_suite, test_case): + if a: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_TRUE failed") ; + +def TRICK_EXPECT_FALSE( a , test_suite, test_case): + if not a: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_FALSE failed") ; + +def TRICK_EXPECT_EQ( a , b, test_suite, test_case): + if a == b: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_EQ failed") ; + print ("a = {}".format(a)) + print ("b = {}".format(b)) + +def TRICK_EXPECT_NE( a , b, test_suite, test_case): + if a != b: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_NE failed") ; + print ("a = {}".format(a)) + print ("b = {}".format(b)) + +def TRICK_EXPECT_LT( a , b, test_suite, test_case): + if a < b: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_LT failed") ; + print ("a = {}".format(a)) + print ("b = {}".format(b)) + +def TRICK_EXPECT_LE( a , b, test_suite, test_case): + if a <= b: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_LE failed") ; + print ("a = {}".format(a)) + print ("b = {}".format(b)) + +def TRICK_EXPECT_GT( a , b, test_suite, test_case): + if a > b: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_GT failed") ; + print ("a = {}".format(a)) + print ("b = {}".format(b)) + +def TRICK_EXPECT_GE( a , b, test_suite, test_case): + if a >= b: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_GE failed") ; + print ("a = {}".format(a)) + print ("b = {}".format(b)) + +def TRICK_EXPECT_NEAR( a , b, tol, test_suite, test_case): + if math.fabs(a - b) < tol: + trick.add_test_result( test_suite , test_case , "") ; + else: + trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_NEAR failed") ; + print ("a = {}".format(a)) + print ("b = {}".format(b)) + diff --git a/trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py b/trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py new file mode 100644 index 000000000..05daed291 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py @@ -0,0 +1,12 @@ + +trick.frame_log_on() +trick.real_time_enable() +trick.exec_set_software_frame(0.033) +trick.itimer_enable() + +trick.exec_set_enable_freeze(True) +#trick.exec_set_freeze_command(True) + +#simControlPanel = trick.SimControlPanel() +#trick.add_external_application(simControlPanel) + diff --git a/trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr b/trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr new file mode 100644 index 000000000..ca5afb403 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr @@ -0,0 +1,54 @@ +global DR_GROUP_ID +global drg +try: + if DR_GROUP_ID >= 0: + DR_GROUP_ID += 1 +except NameError: + DR_GROUP_ID = 0 + drg = [] + +drg.append(trick.DRBinary("StateData")) +drg[DR_GROUP_ID].set_freq(trick.DR_Always) +drg[DR_GROUP_ID].set_cycle(0.10) +drg[DR_GROUP_ID].set_single_prec_only(False) +drg[DR_GROUP_ID].add_variable("dyn.body.force[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.force[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.force[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][0]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][1]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][2]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][0]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][1]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][2]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][0]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][1]") +drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][2]") +drg[DR_GROUP_ID].add_variable("dyn.body.pos[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.pos[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.pos[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.angle[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.vel[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.vel[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.vel[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.acc[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.acc[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.acc[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.omega[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.omega[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.omega[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[2]") +drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[0]") +drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[1]") +drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[2]") + + + +trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) +drg[DR_GROUP_ID].enable() diff --git a/trick_sims/SIM_singlerigidbody/sims/README.md b/trick_sims/SIM_singlerigidbody/sims/README.md new file mode 100644 index 000000000..fc1bbe027 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/README.md @@ -0,0 +1,168 @@ +# Single Rigid Body +``sims`` is a simulation of the motion of a sphere that is a single rigid body with six degrees of freedom. + +The motion of the sphere is found by using Euler's equations of motion, and can be controlled by changing several initial input values such as force, position, angle, angular velocity, velocity, and position of the force. The recorded data of the motion can then be viewed and analyzed. + +## Building the simulation +In the ```sims``` directory, type **trick-CP** to build the simulation executable. When it is complete, you should see: + +``` +=== Simulation make complete === +``` + +## Running the simulation +In the ```sims``` directory, type: + +``` +% S_main_*.exe SET_test/RUN_1/input.py +``` + +## Recorded data +To review the recorded data using trick quick plot, type: + +``` +trick-dp & +``` +The quick plot should appear. + +To view the data: +* Double click the path name containing the sim directory in the **Sims/Runs Tree** pane. +* Double click **SET_test**. +* Double click **RUN_1** and click the blue lightning button in the tool bar to launch quick plot. +* In quick plot, double click any variable in the **vars** pane and then click on the single white sheet in the tools bar to view the data. + +![dp_example](images\trick-dp.png) + +### Alternative method +An alternative method to view the data is to use koviz. + +If not already installed, download from Github and follow the instructions to install: https://github.com/nasa/koviz + +To run koviz, type: +``` +koviz SET_test/RUN_1 +``` + +Koviz should appear. + +To view the data, double click on any variable under the **Vars** pane. + +![Koviz_Example](images\koviz.png) + +## Dynamics model + +### Equations of Motion +To determine the sphere's motion, we will use Euler's equations of motion for a single rigid body. Euler's equations describe the combined translational and rotational dynamics of a rigid body in three-dimensional space. + +![Equations_of_motion](images\EquationsofMotion.png) + +Where, + +![Force_and_Torque_eq](images\ForceTorque.png) +* is a 6x1 column vector. +* F is the applied force. +* τ is the torque. + +![Mass_Matrix_eq](images\MassMatrix.png) +* is a 6x6 matrix. +* m is the mass. +* I 3x3 is the identity matrix. +* I is the inertia. +* C m is the center of mass. + +![Acceleration_Omega](images\AccOmega.png) +* is a 6x1 column vector. +* a o is the acceleration. + +![Force_Torque_Remain](images\ForceTorqueRemain.png) +* is a 6x1 column vector. +* ω A is the angular velocity. + + +#### Force +The force acting on the sphere is calculated by the cross product of the rotation matrix and initial force. + +![Force](images\Force.png) + +#### Torque +Torque is found by the cross product of the rotation matrix and the cross product of the position of force and initial force. + +![Torque](images\Torque.png) + +#### Mass +The default value of the mass of the sphere is: + +![Mass](images\Mass.png) + +#### Radius +The default value of the radius is: + +![Radius](images\Radius.png) + +#### Center of mass +The center of mass of a sphere is equal to its radius. + +![Center_of_mass](images\Centerofmass.png) + +#### Inertia +Inertia of a sphere is calculated by: + +![Inertia](images\Inertia.png) + +#### Acceleration and angular acceleration +To determine the acceleration and angular acceleration, ```dLU_Choleski``` must be used. ```dLU_Choleski``` solves linear sets of equations in the form of [A]x = b and returns the vector x, which is the acceleration. It decomposes the symmetric, positive definite [A] matrix into a lower triangular form, where we can then substitute and our equation becomes: + +![Vector_a](images\Vectora.png) + +The term 'a' is a 6x1 vector. Acceleration is equal to the first three values of vector a and angular acceleration is equal to the last three values of vector a. + +### State Integration +The state is defined by position, velocity, angle, and angular velocity. They are calculated by numerically integrating velocity, acceleration, angular velocity, and angular acceleration, respectively. + +#### Position +The position of the sphere is determined by integrating the velocity over time. + +![Position](images\Position.png) + +#### Velocity +The velocity is determined by integrating the acceleration of the sphere over time. + +![Velocity](images\Velocity.png) + +#### Angle +The angle is determined by integrating the angular velocity over time. + +![Angle](images\Angle.png) + +#### Angular velocity +The angular velocity is determined by integrating the angular acceleration over time. + +![Angular_Velocity](images\Angularvelocity.png) + + + +## Inputs + +Variable |Type |Units +----------------------------|-------------|--------- +dyn.body.POS_INIT |double[3] |m +dyn.body.ANGLE_INIT |double[3] |rad +dyn.body.OMEGA_INIT |double[3] |rad*s^-1 +dyn.body.FORCE_INIT |double[3] |N +dyn.body.TORQUE_INIT |double[3] |N*m +dyn.body.VEL_INIT |double[3] |m/s +dyn.body.POS_FORCE |double[3] |m + +## Outputs + +Variable |Type |Units +----------------------------|-------------|-------- +dyn.body.pos |double[3] |m +dyn.body.vel |double[3] |m/s +dyn.body.acc |double[3] |m/s^2 +dyn.FORCE_INIT |double[3] |N +dyn.force |double[3] |N +dyn.body.angle_force |double[3] |rad +dyn.body.omegaDot |double[3] |rad/^s2 +dyn.body.omega |double[3] |rad*s^-1 +dyn.body.rotate |double[3] | diff --git a/trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py b/trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py new file mode 100644 index 000000000..b4e8e7395 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py @@ -0,0 +1,81 @@ +################################################################################ +# _ ___ _ # +# / |___| _ ) ___ __| |_ _ # +# | |___| _ \/ _ \/ _` | || | # +# |_| |___/\___/\__,_|\_, | # +# __ ___ ___ __|__/ # +# / / ___| \ / _ \| __| # +# / _ \___| |) | (_) | _| # +# \___/ |___/ \___/|_| # +# # +# This input creates a simple body with 6 DOF: # +# -Creates 1 body # +# -Initializes 6 DOF # +################################################################################ + +# ============================================================================ - +# This file is used to store several quality of life python functions. +# ============================================================================ - +exec(open("Modified_data/state_data.dr").read()) +exec(open("Modified_data/realtime.py").read()) + +################################################################################ +# dyn DATA # +# (NOTE: dyn is our instance of BodySimObject) # +# This builds our objects, and defines their physical properties. # +################################################################################ + +# ============================================================================ - +# Establish the physical properties of the body...CONSTANTS! +# ============================================================================ - +dyn.body.mass = 20.0 +dyn.body.radius = 2.0 + +# ============================================================================ - +# Initialize system +# ============================================================================ - +M_PI = 3.141592653589793238460 + +#dyn.body.POS_INIT[0] = 0.0 +#dyn.body.POS_INIT[1] = 0.0 +#dyn.body.POS_INIT[2] = 0.0 + +#dyn.body.ANGLE_INIT[0] = 0.0 +#dyn.body.ANGLE_INIT[1] = 0.0 +#dyn.body.ANGLE_INIT[2] = 0.0 + +#dyn.body.OMEGA_INIT[0] = 0.0 +#dyn.body.OMEGA_INIT[1] = 0.0 +#dyn.body.OMEGA_INIT[2] = 0.0 + +#dyn.body.FORCE_INIT[0] = 0.0 +#dyn.body.FORCE_INIT[1] = 0.0 +#dyn.body.FORCE_INIT[2] = 10.0 + +#dyn.body.TORQUE_INIT[0] = 0.0 +#dyn.body.TORQUE_INIT[1] = 0.0 +#dyn.body.TORQUE_INIT[2] = 0.0 + +#dyn.body.VEL_INIT[0] = 0.0 +#dyn.body.VEL_INIT[1] = 0.0 +#dyn.body.VEL_INIT[2] = 0.0 + +#dyn.body.POS_FORCE[0] = 2.0 +#dyn.body.POS_FORCE[1] = 0.0 +#dyn.body.POS_FORCE[2] = 0.0 + +################################################################################ +# SIMULATION SET UP # +# This is where we set up the remaining inputs to create a working sim. # +################################################################################ + +# ============================================================================ - +# getintegrator(integration method, number of variables to be integrated) +# This sets up the integration scheme we use to analyze this system. +# ============================================================================ - +dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 12) + +# ============================================================================ - +# This tells the sim to stop after a few seconds +# ============================================================================ - +trick.stop(10.0) diff --git a/trick_sims/SIM_singlerigidbody/sims/S_define b/trick_sims/SIM_singlerigidbody/sims/S_define new file mode 100644 index 000000000..f14082c52 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/S_define @@ -0,0 +1,30 @@ +/************************TRICK HEADER************************* +PURPOSE: + ( Single body rigid dynamics simulation ) +LIBRARY DEPENDENCIES: + ((src/body.cpp) + ) +*************************************************************/ +#define TRICK_NO_MONTE_CARLO +#define TRICK_NO_MASTERSLAVE +#define TRICK_NO_INSTRUMENTATION +#define TRICK_NO_REALTIMEINJECTOR +#define TRICK_NO_ZEROCONF + +#include "sim_objects/default_trick_sys.sm" +##include "include/body.hh" +class BodySimObject : public Trick::SimObject { + public: + BODY body; + + BodySimObject() { + ("default_data") body.default_data() ; + ("initialization") body.init() ; + ("derivative") body.derivative() ; + ("integration") trick_ret = body.integ() ; + } +}; + +BodySimObject dyn; +IntegLoop dyn_integloop(0.01) dyn; + diff --git a/trick_sims/SIM_singlerigidbody/sims/S_overrides.mk b/trick_sims/SIM_singlerigidbody/sims/S_overrides.mk new file mode 100644 index 000000000..6b9fd0858 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/sims/S_overrides.mk @@ -0,0 +1,24 @@ +#============================================================================= +# Allow user to specify their own package locations. +# - File is skipped if not present +#============================================================================= + +#============================================================================= +# Set up the include paths +#============================================================================= + +TRICK_CFLAGS := -I${PWD} -I.. +TRICK_CXXFLAGS := -I${PWD} -I.. + + +#============================================================================= +# Add target to clean the documents directories of TeX related files. +#============================================================================= +clean_docs: + @rm -f *_log *execution *_hs *_summary + @cd docs; rm -f *.aux *.bbl *.blg *.lof *.log *.lot *.toc + @cd docs/tex; rm -f *.aux *.log + @echo Cleaned documents directory. + +spotless: clean_docs + diff --git a/trick_sims/SIM_singlerigidbody/sims/images/AccOmega.png b/trick_sims/SIM_singlerigidbody/sims/images/AccOmega.png new file mode 100644 index 0000000000000000000000000000000000000000..b464863e605f13b082c3bf379ea2bd03df87e6c1 GIT binary patch literal 1334 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 XFAP~xc?6tu00000NkvXXu0mjfNHNzM literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/Centerofmass.png b/trick_sims/SIM_singlerigidbody/sims/images/Centerofmass.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab5ebe778f10ed8d134ca79d8a21b75c7c48bf2 GIT binary patch literal 1890 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/ForceTorque.png b/trick_sims/SIM_singlerigidbody/sims/images/ForceTorque.png new file mode 100644 index 0000000000000000000000000000000000000000..168af35f1e01a04834bc2637ae9ec8b0e27359b8 GIT binary patch literal 886 zcmV-+1Bv{JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&0}Dw+K~!i%?V7zy za#0+|zdo4-E>RIi(NIf+3DzPlRul~lEfS(cWT;BYu7%BSR=dU|@o)zuZo z$H%{pv9U2~t&EY8k-Y2N-Q6LXOj2tR)H_v-lamvryStkreHj=SP&PL=DJn!JIxkfz zWu&ua*4Earx3`CfhX?j+YG`O+^)D|kETI#L1p7=+PY49 z<~?RGP>CO5sl&rV*ladjUS6_eeSIB$eSOrb4I!!b_ji_0Q&Urzn3%xy^fcUVciyAa zf{>J&Pj7E;c@q8o{b+4%rAQk>QffYRb#NT#fy~UMN07^rFfB2yhtftq!ceD*E~;8 zPcb_?%Z9tgwt=b&~3~@ALCBMOmy?E8CMUhWu9$FH(vZDa8ly8~57=QJp0!>;M1& M07*qoM6N<$f}cH^wEzGB literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/ForceTorqueRemain.png b/trick_sims/SIM_singlerigidbody/sims/images/ForceTorqueRemain.png new file mode 100644 index 0000000000000000000000000000000000000000..528594f014b4deb921d1a4c9c2908c603b5cbdaa GIT binary patch literal 3401 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 literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/MassMatrix.png b/trick_sims/SIM_singlerigidbody/sims/images/MassMatrix.png new file mode 100644 index 0000000000000000000000000000000000000000..884bdc4e97bf87cc568326bc79f63f9640864cb8 GIT binary patch literal 2953 zcmV;43wHF0P)5RV00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&3m!>CK~#8N?VWc_ zR8J7c$Dh5%-eZhWV~t(0i@o<=BC!O~z#qmai4r9CUO}U=D;m488+(ZbMX+OuiUlN6 z>{$1=-?@F~<8cVc!5#QM$%Wm$0=I8=W_EVwkxfX*Qr)ZaZx=R8X-0|mTug*LH+yp zw?4Xc>!zMH$&7U9&>_L~eEj$^y?OISJ*$95&~x$PMNzFp>xIlUGMFOKR-X} z)Tt9SZQ7K**K_C2sb@{}Y}&Mm1`HTL{{H?XeFIv$bSbS{w~nO0K;y@cSFf@YN;6o= zDAUlkZCf#7#0b?h(GwFBBcyjPCQqK6$Q)d`az#|HUR_L_I8lwH9;Y!4-@bigM+jQM zBq8tLzo$lx8c~-nU1;9Cd6YeScJ+*fCQX`9ks?K?b?eq@#6CDg5UyRjMqj>svHO?F z3LyAXt5z)Q*KXQce;K763#|7QKeLKyXHH%)qe$8X2 zPMxByTes4(Wy?saH6Al^=FAzYT)8rpFJE4bWE~zpd`NQNPd9JggxRIThY!=1En8^u z;>D~9F^7i^9ir8%SJU3Td)2!v95`@*{ep!H7pf84^z7M_wSrx-Scu>J$wyeVYL)o@ z{kv$;paHjof`WMb*s)_`=+L1eFfdR^50}S0Jw3(FojbX01pdL8F=JFOYq4U*3K1I{ z%X1hI5FjEVB6!@}+gmJJv`9#yu-g5)b?aK62d=KJ!o|f!_0kW!_z19BkowZ4OH;#! z4S6hg?%XW-@&fa@1o-*$C!bpw(fkAX$EcC41GacIYu2PEPoB_=7cZzsj~+Zv0CTi^ z_imC4#%lL57kCeV_B?<7JhgA%p8FY1ssv%=$dPpa{(X*g_3qtUjS^kGdX>6&?@pyk zl~N1# zE#!o9JEi#e_y}oVxee9q=H|xjw1UVU)Od0aBYpe!<-bEiUSLtEP$3~Nyc!W=&z?P^ zapT6SC)niX%9V@F>z|l8bEazjJ$5k-2>$3-Go%>taJ{ORUy@I}3KuTSD?txdz0oXS z6=+*YtnLyeN^l!sb-96553^u6fLojW{ci%XX-CD<)U;o;v0U}mJ?avNYCQU!~H zj^s2#$&w|-ty{NLPYAhl5M|4jRXqy`hHTrmO~^k+NH1883L({@kYr`_}v~J z9zvQGHEKcbGFX#a zwF$W^NuZVVq*)_ii7Z( ziWV(Oa)MZE=z#{oN|-ch5`PZ1rf|OW;P1kF0sIq35gHoG+E9NkfH~^gwX5n`z;}X= z5E2qX&6+jiF(isW(@E1p>({U6=T4kB!COy+mEogl;4{aL9m}ETI(6#M;K74Q3K44! zDRg`d;5VfhB@kAU(+F7AdZbF?hY@WXnG&#qwa=A~q{y2$uXUAZKoiI>D|~%@)yQwc z!^5pBPzsTdYM8Z=BY>?p{%&dBR4XCT(b1}v5WGJ)IG9&0{0ieKqy{vzT!gA8guM8y zWq`lGzmO)C+eXr?5rA|8Rm%caA|6JxZDdM7Gz~#0fE@|!sWcVb2k;3HZbdMwdGqER zz|w;ih20E*e}MPO@5cR%2DV;0eX3_6fByWcl@Mq^Tj2fm>eZuOy?U`P z1Us>qm>4Qot{nHVRYf)uw)H6?)q;>7czSx0^r}hPOPVob2FYCswQALhpMy$-v$$l* z5;g}=yVBdHfPesg9!MKZawV`@hUvg_M$?fMfeFNX0I3}kIN=2g7GyIa{Wmp|3>L-k zo8(MGdJ+~ECZr#tdcVQ;%ZPCdDjBNs-Me>cB}f%$=%O({+#2quoh6a*8-6a*8-6a*8-6a*8- zX#^oMGLqJ;S;O%Ffb;yQs3>lmq(4p}2oM6q)^UE1^901&kphRCV_;60V&}t)Wfirb%C9^8dRPpuK zf`H5yWZfbeWcu{!oQaF#4G#|w{t2fK8NNs|fqI8yq=BsG;NW0u4r5Xvg9o{HSruCu z-Hzg~1p$#i6m+1f2Px;M;|Dk+hju`!HSz-hQr`7dPnwW8gGzK1ntzb#1pyhgQ1LJW z*!pQ8yA~0_&Ye4}k;GL`$cC;|sZz3u6X{mf;{+sC@#QG~S`g&6j*Br+R8gZw4K+$6 zx1Wim{K%0baN%>>wQI+HXdajvt*x)((YG@b&g36}GzkJqyYycM7uh%l ze*lG|@EzbF!Z+yHu_N!Dv70c0&seZv0lB%ksS%=;D_3#>DefPzdGls|ABtU(-i~4! zcXxO7%FMy%&!5>pa3&uqO@e^*b8XcEta4OD>udb5Jw%@Vu3ftl2nZ^j5LzBRdNhZS zAtcy};sz4fd1#f@xRnelhM_&64d9!=-@t3pMpZUeS7sr(iZ6#DCpQ792{9Y1o`9{Y z9;BG-Q?2zNeO*q7kY>hucTpoaos`a{HHCfJv}s)52T(gG9aCC*QZ+RLHas&81OYv;baRqjfh2PDeU@+Y-k#6T~k`oV`7^$2|`8@6cl8Q$HS3~ zkB_%{+Yqqm=xE-To1_7y8LT+6(kUs7X2n?HlT?wZiEZp|8Zru_Sus}lBvoW;l5#SI zAef{-rXZLwHU$Cy_67C%+QS(VCrthx+)YJ)J#m*6BZ>Z}69PCmIMRcA4e0;>k4feN zp?#bX>%r}h^fxmx{{g58WBLdtj422v5~BYBd&uEra8>oP00000NkvXXu0mjfhpcho literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/Position.png b/trick_sims/SIM_singlerigidbody/sims/images/Position.png new file mode 100644 index 0000000000000000000000000000000000000000..aec80ccdf63beda13477e080297d23433fd9dbd5 GIT binary patch literal 3476 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 P00000NkvXXu0mjf++DUM literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/Vectora.png b/trick_sims/SIM_singlerigidbody/sims/images/Vectora.png new file mode 100644 index 0000000000000000000000000000000000000000..e301c7c92bf1257ec1a0788aeafe8619958b2e33 GIT binary patch literal 1493 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 N002ovPDHLkV1gu+D^dUe literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/koviz.png b/trick_sims/SIM_singlerigidbody/sims/images/koviz.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7605f7c0ec1f3669b09779a2777c50b9b00893 GIT binary patch literal 160434 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 XwCy*Qa?ezbW*U01I`SW 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 MNGOQsioW&yf1rcZb^rhX literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/trick-dp.png b/trick_sims/SIM_singlerigidbody/sims/images/trick-dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a7880be983d6d1c21685717144597c4fe2075166 GIT binary patch literal 90375 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 UoD1<3JOi&s59IIX-qZ8`KVF;DU;qFB literal 0 HcmV?d00001 diff --git a/trick_sims/SIM_singlerigidbody/sims/trick.zip b/trick_sims/SIM_singlerigidbody/sims/trick.zip new file mode 100644 index 0000000000000000000000000000000000000000..4e7b07c5f16ff5c1102db8ca380f7533e4969656 GIT binary patch literal 217349 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

3Eyu^nc}KcZVUg~T(S5#V0s6Ljl+eQ= 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%0D-_W&^trZ4|R7x;SuQr6E5sG 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 literal 0 HcmV?d00001 From ba032120c6402aa0caa7b5359f987f750eac943f Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Thu, 22 Aug 2024 15:15:58 -0500 Subject: [PATCH 02/40] Added matrix operations file. --- .../src/matrixops/MatrixOps.java | 152 ++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/matrixops/MatrixOps.java diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/matrixops/MatrixOps.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/matrixops/MatrixOps.java new file mode 100644 index 000000000..463b303be --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/matrixops/MatrixOps.java @@ -0,0 +1,152 @@ +// This file contains helper functions for the matrix operations necessary for the graphics to be generated. + +package trick.matrixOps; + + + +public class MatrixOps { // Defines the matrix operation class. + + public static void printMatrix(double M[][]) { // Prints out the matrix. + int M_rows = M.length; + int M_cols = M[0].length; + for (int i = 0; i < M_rows; i++) { + for (int j = 0; j < M_cols; j++) + System.out.print(" " + M[i][j]); + System.out.println(); + } + } + + public static void printDVector(double V[]) { // Prints out a vector passed as a double. + System.out.print("("); + for (int i = 0; i < V.length; i++) { + System.out.print(" " + V[i]); + } + System.out.println(")"); + } + + public static void printIVector(int V[]) { // Prints out a vector passed as an integer. + System.out.print("("); + for (int i = 0; i < V.length; i++) { + System.out.print(" " + V[i]); + } + System.out.println(")"); + } + + public static void MtimesM( double R[][], double A[][], double B[][]) { // Multiplies two matrices together. + int A_rows = A.length; + int A_cols = A[0].length; + int B_rows = B.length; + int B_cols = B[0].length; + int R_rows = R.length; + int R_cols = R[0].length; + + if (A_cols != B_rows) { // Checks if the matrices can be multiplied. + System.out.println( "\nNot possible to multiply matrixes,"); + System.out.println("where the first has " + A_cols + " columns,"); + System.out.println("and the second has " + B_rows + "rows."); + return; + } + if ((R_rows != A_rows) || (R_cols != B_cols)) { // Checks if the defined result matrix is the wrong size. + System.out.println( "\n Result matrix is wrong size."); + return; + } + + for (int i = 0; i < A_rows; i++) { // Multiplies the two matrices together. + for (int j = 0; j < B_cols; j++) { + R[i][j] = 0.0; + for (int k = 0; k < B_rows; k++) + R[i][j] += A[i][k] * B[k][j]; + } + } + } + + public static void MtimesV( double R[], double M[][], double V[]) { // Multiplies a matrix with a vector. + int M_rows = M.length; + int M_cols = M[0].length; + int V_rows = V.length; + + if (M_cols != V_rows) { // Checks if the matrix and the vector can be multiplied together. + System.out.println( "\nNot possible to multiply matrix and vector,"); + System.out.println( "where the matrix has " + M_cols + " columns,"); + System.out.println("and the vector has " + V_rows + " elements."); + return; + } + + if (R.length != M.length) { // Checks if the defined result vector is the wrong size. + System.out.println( "\n Result vector is wrong size."); + return; + } + + for (int i =0; i < M_rows ; i++) { // Multiplies the vector with the matrix. + R[i] = 0.0; + for (int j =0; j < M_cols ; j++) { + R[i] += M[i][j] * V[j]; + } + } + return; + } + + public static void VplusV(double R[], double A[], double B[]) { // Adds two matrices together. + if ((A.length != B.length) || (A.length != R.length)) { + System.out.println( "\n MatrixOps::VplusV : Vectors are not the same size."); + } + for (int i=0; i Date: Thu, 22 Aug 2024 15:43:22 -0500 Subject: [PATCH 03/40] Imported libraries and declared variables. --- .../src/srb_display.java | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java new file mode 100644 index 000000000..e4d3bf153 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java @@ -0,0 +1,72 @@ +// This file contains the architecture for the single rigid body simulation's 3D graphics client. + +package trick; + +// AWT is the abstract window toolkit. +import java.awt.Graphics2D; +import java.awt.Graphics; +import java.awt.Color; +import java.awt.event.MouseEvent; + +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.FileReader; + +import java.net.Socket; + +import java.util.*; + +// Swing is a GUI widget toolkit. +import javax.swing.JFrame; // Allows you to manage a top-level window. +import javax.swing.JPanel; // The stuff within the window (controls, buttons, etc.). +import javax.swing.event.MouseInputAdapter; + +import trick.matrixOps.MatrixOps; + +/** + * @author Aditya Girish + */ + + class SRBView extends JPanel { // Main body class of how we view the SRB. + + private int screen_half_width; + private int screen_half_height; + + private double illumination_vector[]; // World coordinates + + private double vantageAzimuth; // Secifies the direction of the celestial light source. + private double vantageElevation; + + private double vantageDistance; + private double beta; + + private double worldToVantageRotation[][]; + + private Color waterColor; + private double water_vrtx_world[][]; + + private int water_poly_x[]; + private int water_poly_y[]; + + private Color vehicleLineColor; + private Color vehicleFillColor; + + private double[] vehiclePos; + + private double bodyToWorldRotation[][]; + + private double veh_vrtx_body[][]; + private double veh_vrtx_world[][]; + private int veh_vrtx_screen[][]; + + private int veh_edges[][]; + private int veh_triangles[][]; + + private double veh_unit_normals_body[][]; + private double veh_unit_normals_world[][]; + private double veh_unit_normals_vantage[][]; + + } \ No newline at end of file From 95d81a4be2d42e45f0ffd24e793d4bec3db1850e Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Thu, 22 Aug 2024 16:06:09 -0500 Subject: [PATCH 04/40] New objects and more defined values. --- .../src/srb_display.java | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java index e4d3bf153..31faf9f72 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java @@ -45,16 +45,10 @@ class SRBView extends JPanel { // Main body class of how we view the SRB. private double worldToVantageRotation[][]; - private Color waterColor; - private double water_vrtx_world[][]; + private Color bodyLineColor; + private Color bodyFillColor; - private int water_poly_x[]; - private int water_poly_y[]; - - private Color vehicleLineColor; - private Color vehicleFillColor; - - private double[] vehiclePos; + private double[] bodyPos; private double bodyToWorldRotation[][]; @@ -68,5 +62,25 @@ class SRBView extends JPanel { // Main body class of how we view the SRB. private double veh_unit_normals_body[][]; private double veh_unit_normals_world[][]; private double veh_unit_normals_vantage[][]; - + + public SRBView() { + + ViewListener viewListener = new ViewListener(); + addMouseListener(viewListener); + addMouseMotionListener(viewListener); + + // Direction of light. + illumination_vector = new double[] {-0.707, 0.0, -0.707}; + + // Location of the observer, looking toward the world's origin. + vantageAzimuth = Math.toRadians(45.0); + vantageElevation = Math.toRadians(20.0); + vantageDistance = 12.0; + + // Half field of view angle + beta = Math.toRadians(40.0); + + + } + } \ No newline at end of file From 208e3c2b6420f5f4871120a0e380a99ae544378e Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Fri, 23 Aug 2024 09:37:05 -0500 Subject: [PATCH 05/40] Declared more variables and added AzElRot. function. --- .../src/srb_display.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java index 31faf9f72..ec95add97 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java @@ -80,7 +80,34 @@ public SRBView() { // Half field of view angle beta = Math.toRadians(40.0); + worldToVantageRotation = new double[3][3]; + setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); + + bodyLineColor = Color.GRAY; + bodyFillColor = new Color(255, 255, 250); + + bodyPos = new double[] {0.0, 0.0, 0.0}; + + bodyToWorldRotation = new double[][] {{1.0, 0.0, 0.0}, + {0.0, 1.0, 0.0}, + {0.0, 0.0, 1.0}}; + } + public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. + double Rotation_about_Y[][] = { + { Math.cos(elevation), 0.0, Math.sin(elevation)}, + { 0.0, 1.0, 0.0}, + {-Math.sin(elevation), 0.0, Math.cos(elevation)} + }; + + double Rotation_about_Z[][] = { + {Math.cos(azimuth), -Math.sin(azimuth), 0.0}, + {Math.sin(azimuth), Math.cos(azimuth), 0.0}, + { 0.0, 0.0, 1.0} + }; + MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); + } + } \ No newline at end of file From 5b11d7ffe6236ed489c664f06e4a2aa570157a79 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Fri, 23 Aug 2024 11:11:30 -0500 Subject: [PATCH 06/40] Sockets and file connections 1 --- .../src/SRBDisplay.java | 226 ++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java new file mode 100644 index 000000000..20312ed64 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -0,0 +1,226 @@ +// This file contains the architecture for the single rigid body simulation's 3D graphics client. + +package trick; + +// AWT is the abstract window toolkit. +import java.awt.Graphics2D; +import java.awt.Graphics; +import java.awt.Color; +import java.awt.event.MouseEvent; + +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.FileReader; + +import java.net.Socket; + +import java.util.*; + +// Swing is a GUI widget toolkit. +import javax.swing.JFrame; // Allows you to manage a top-level window. +import javax.swing.JPanel; // The stuff within the window (controls, buttons, etc.). +import javax.swing.JViewport.ViewListener; +import javax.swing.event.MouseInputAdapter; + +import trick.matrixOps.MatrixOps; + +/** + * @author Aditya Girish + */ + + class SRBView extends JPanel { // Main body class of how we view the SRB. + + private int screen_half_width; + private int screen_half_height; + + private double illumination_vector[]; // World coordinates + + private double vantageAzimuth; // Secifies the direction of the celestial light source. + private double vantageElevation; + + private double vantageDistance; + private double beta; + + private double worldToVantageRotation[][]; + + private Color bodyLineColor; + private Color bodyFillColor; + + private double[] bodyPos; + + private double bodyToWorldRotation[][]; + + private double veh_vrtx_body[][]; + private double veh_vrtx_world[][]; + private int veh_vrtx_screen[][]; + + private int veh_edges[][]; + private int veh_triangles[][]; + + private double veh_unit_normals_body[][]; + private double veh_unit_normals_world[][]; + private double veh_unit_normals_vantage[][]; + + public SRBView() { + + ViewListener viewListener = new ViewListener(); + addMouseListener(viewListener); + addMouseMotionListener(viewListener); + + // Direction of light. + illumination_vector = new double[] {-0.707, 0.0, -0.707}; + + // Location of the observer, looking toward the world's origin. + vantageAzimuth = Math.toRadians(45.0); + vantageElevation = Math.toRadians(20.0); + vantageDistance = 12.0; + + // Half field of view angle + beta = Math.toRadians(40.0); + + worldToVantageRotation = new double[3][3]; + setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); + + bodyLineColor = Color.GRAY; + bodyFillColor = new Color(255, 255, 250); + + bodyPos = new double[] {0.0, 0.0, 0.0}; + + bodyToWorldRotation = new double[][] {{1.0, 0.0, 0.0}, + {0.0, 1.0, 0.0}, + {0.0, 0.0, 1.0}}; + + // NEED TO FILL THIS IN LATER WITH THE REMAINING INFORMATION. + + + } + + public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. + double Rotation_about_Y[][] = { + { Math.cos(elevation), 0.0, Math.sin(elevation)}, + { 0.0, 1.0, 0.0}, + {-Math.sin(elevation), 0.0, Math.cos(elevation)} + }; + + double Rotation_about_Z[][] = { + {Math.cos(azimuth), -Math.sin(azimuth), 0.0}, + {Math.sin(azimuth), Math.cos(azimuth), 0.0}, + { 0.0, 0.0, 1.0} + }; + MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); + } + + } + + public class SRBDisplay extends JFrame { + + private SingleRigidBodyView singleRigidBodyView; + private BufferedReader in; + private DataOutputStream out; + + public SRBDisplay( SingleRigidBodyView srbv) { + singleRigidBodyView = srbv; + add( singlRigidBodyView); + setTitle("SRB Display"); + setSize(1597, 987); + setLocationRelativeTo(null); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } + + public void connectToServer( String host, int port ) throws IOException { + Socket socket = new Socket(host, port); + in = new BufferedReader( new InputStreamReader( socket.getInputStream())); + out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); + } + + public void drawSRBView() { + singleRigidBodyView.repaint(); + } + + private static void printHelpText() { + System.out.println( + "----------------------------------------------------------------------\n" + + "usage: java jar SRBDisplay.jar \n" + + "----------------------------------------------------------------------\n" + ); + } + + public static void main(String[] args) throws IOException { + + String host = "localHost"; + int port = 0; + String bodyImageFile = null; + + int ii = 0; + while (ii < args.length) { + switch (args[ii]) { + case "-help" : + case "--help" : { + printHelpText(); + System.exit(0); + } break; + default : { + port = (Integer.parseInt(args[ii])); + } break; + } + ++ii; + } + + if (port == 0) { + System.out.println("No variable server port specified."); + printHelpText(); + System.exit(0); + } + + SRBModuleView srbModuleView = new SRBModuleView(); + + SRBDisplay sd = new SRBDisplay(SRBModuleView); + sd.setVisible(true); + + + + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } \ No newline at end of file From 4b1292fbcb84e96da3b36fe5ece494d5e479d550 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Fri, 23 Aug 2024 13:55:57 -0500 Subject: [PATCH 07/40] Adding to variable server. --- .../src/SRBDisplay.java | 81 ++++++++++++++++++- 1 file changed, 77 insertions(+), 4 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index 20312ed64..ac1fdd37b 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -121,7 +121,7 @@ public class SRBDisplay extends JFrame { private BufferedReader in; private DataOutputStream out; - public SRBDisplay( SingleRigidBodyView srbv) { + public SRBDisplay( SingleRigidBodyView srbv) { // Creates the display window. singleRigidBodyView = srbv; add( singlRigidBodyView); setTitle("SRB Display"); @@ -130,7 +130,7 @@ public SRBDisplay( SingleRigidBodyView srbv) { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } - public void connectToServer( String host, int port ) throws IOException { + public void connectToServer( String host, int port ) throws IOException { // Connects to the server. Socket socket = new Socket(host, port); in = new BufferedReader( new InputStreamReader( socket.getInputStream())); out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); @@ -180,8 +180,81 @@ public static void main(String[] args) throws IOException { SRBDisplay sd = new SRBDisplay(SRBModuleView); sd.setVisible(true); - - + double vehX = 0.0; + double vehY = 0.0; + double vehZ = 0.0; + + double Rxx = 0.0; + double Rxy = 0.0; + double Rxz = 0.0; + double Ryx = 0.0; + double Ryy = 0.0; + double Ryz = 0.0; + double Rzx = 0.0; + double Rzy = 0.0; + double Rzz = 0.0; + + System.out.println("Connecting to: " + host + ":" + port); + sd.connectToServer(host, port); + + sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + + "trick.var_pause() \n" + + "trick.var_add(\"body.dyn.pos[0]\") \n" + + "trick.var_add(\"body.dyn.pos[1]\") \n" + + "trick.var_add(\"body.dyn.pos[2]\") \n" + + "trick.var_add(\"body.dyn.R[0][0]\") \n" + + "trick.var_add(\"body.dyn.R[0][1]\") \n" + + "trick.var_add(\"body.dyn.R[0][2]\") \n" + + "trick.var_add(\"body.dyn.R[1][0]\") \n" + + "trick.var_add(\"body.dyn.R[1][1]\") \n" + + "trick.var_add(\"body.dyn.R[1][2]\") \n" + + "trick.var_add(\"body.dyn.R[2][0]\") \n" + + "trick.var_add(\"body.dyn.R[2][1]\") \n" + + "trick.var_add(\"body.dyn.R[2][2]\") \n" + + "trick.var_ascii() \n" + + "trick.var_cycle(0.1) \n" + + "trick.var_unpause()\n" ); + + sd.out.flush(); + + sd.drawSRBView(); + + Boolean go = true; + + while (go) { + String field[]; + try { + String line; + line = sd.in.readLine(); + field = line.split("\t"); + + vehX = Double.parseDouble( field[1] ); + vehY = Double.parseDouble( field[2] ); + vehZ = Double.parseDouble( field[3] ); + + Rxx = Double.parseDouble( field[4] ); + Rxy = Double.parseDouble( field[5] ); + Rxz = Double.parseDouble( field[6] ); + Ryx = Double.parseDouble( field[7] ); + Ryy = Double.parseDouble( field[8] ); + Ryz = Double.parseDouble( field[9] ); + Rzx = Double.parseDouble( field[10] ); + Rzy = Double.parseDouble( field[11] ); + Rzz = Double.parseDouble( field[12] ); + + // Set the Vehicle position + SRBView.setVehPos(vehX, vehY, vehZ); + + SRBView.setBodyToWorldRotation( Rxx, Rxy, Rxz, + Ryx, Ryy, Ryz, + Rzx, Rzy, Rzz ); + + } catch (IOException | NullPointerException e ) { + go = false; + } + sd.drawSRBView(); + } + } } From f5d9cb1d5dfda2445a1c532902f984cbc5a3acc1 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 09:32:10 -0500 Subject: [PATCH 08/40] Variables for the variable server. --- .../src/SRBDisplay.java | 61 +++++++++++++++---- 1 file changed, 48 insertions(+), 13 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index ac1fdd37b..5f5f0eb54 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -184,7 +184,7 @@ public static void main(String[] args) throws IOException { double vehY = 0.0; double vehZ = 0.0; - double Rxx = 0.0; + double Rxx = 0.0; // Figure out what this stuff does. double Rxy = 0.0; double Rxz = 0.0; double Ryx = 0.0; @@ -199,18 +199,53 @@ public static void main(String[] args) throws IOException { sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + "trick.var_pause() \n" + - "trick.var_add(\"body.dyn.pos[0]\") \n" + - "trick.var_add(\"body.dyn.pos[1]\") \n" + - "trick.var_add(\"body.dyn.pos[2]\") \n" + - "trick.var_add(\"body.dyn.R[0][0]\") \n" + - "trick.var_add(\"body.dyn.R[0][1]\") \n" + - "trick.var_add(\"body.dyn.R[0][2]\") \n" + - "trick.var_add(\"body.dyn.R[1][0]\") \n" + - "trick.var_add(\"body.dyn.R[1][1]\") \n" + - "trick.var_add(\"body.dyn.R[1][2]\") \n" + - "trick.var_add(\"body.dyn.R[2][0]\") \n" + - "trick.var_add(\"body.dyn.R[2][1]\") \n" + - "trick.var_add(\"body.dyn.R[2][2]\") \n" + + + "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP + "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + + "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + + + "trick.var_add(\"dyn.body.acc[0]\") \n" + + "trick.var_add(\"dyn.body.acc[1]\") \n" + + "trick.var_add(\"dyn.body.acc[2]\") \n" + + + "trick.var_add(\"dyn.body.angle[0]\") \n" + + "trick.var_add(\"dyn.body.angle[1]\") \n" + + "trick.var_add(\"dyn.body.angle[2]\") \n" + + + "trick.var_add(\"dyn.body.angle_force[0]\") \n" + + "trick.var_add(\"dyn.body.angle_force[1]\") \n" + + "trick.var_add(\"dyn.body.angle_force[2]\") \n" + + + "trick.var_add(\"dyn.body.force[0]\") \n" + + "trick.var_add(\"dyn.body.force[1]\") \n" + + "trick.var_add(\"dyn.body.force[2]\") \n" + + + "trick.var_add(\"dyn.body.omega[0]\") \n" + + "trick.var_add(\"dyn.body.omega[1]\") \n" + + "trick.var_add(\"dyn.body.omega[2]\") \n" + + + "trick.var_add(\"dyn.body.omegaDot[0]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[1]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[2]\") \n" + + + "trick.var_add(\"dyn.body.pos[0]\") \n" + + "trick.var_add(\"dyn.body.pos[1]\") \n" + + "trick.var_add(\"dyn.body.pos[2]\") \n" + + + "trick.var_add(\"dyn.body.rotate[0][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][2]\") \n" + + + "trick.var_add(\"dyn.body.vel[0]\") \n" + + "trick.var_add(\"dyn.body.vel[1]\") \n" + + "trick.var_add(\"dyn.body.vel[2]\") \n" + + "trick.var_ascii() \n" + "trick.var_cycle(0.1) \n" + "trick.var_unpause()\n" ); From 88c167bc689b19004d2b23e7e228cc5c33a4ce85 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 10:06:38 -0500 Subject: [PATCH 09/40] Variable parsing added. --- .../src/SRBDisplay.java | 104 ++++++++++++++---- 1 file changed, 84 insertions(+), 20 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index 5f5f0eb54..147427846 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -180,11 +180,39 @@ public static void main(String[] args) throws IOException { SRBDisplay sd = new SRBDisplay(SRBModuleView); sd.setVisible(true); - double vehX = 0.0; - double vehY = 0.0; - double vehZ = 0.0; + double f_init_x = 0.0; + double f_init_y = 0.0; + double f_init_z = 0.0; - double Rxx = 0.0; // Figure out what this stuff does. + double accX = 0.0; + double accY = 0.0; + double accZ = 0.0; + + double angleX = 0.0; + double angleY = 0.0; + double angleZ = 0.0; + + double f_angleX = 0.0; + double f_angleY = 0.0; + double f_angleZ = 0.0; + + double forceX = 0.0; + double forceY = 0.0; + double forceZ = 0.0; + + double omegaX = 0.0; + double omegaY = 0.0; + double omegaZ = 0.0; + + double omegaDotX = 0.0; + double omegaDotY = 0.0; + double omegaDotZ = 0.0; + + double posX = 0.0; + double posY = 0.0; + double posZ = 0.0; + + double Rxx = 0.0; double Rxy = 0.0; double Rxz = 0.0; double Ryx = 0.0; @@ -194,6 +222,10 @@ public static void main(String[] args) throws IOException { double Rzy = 0.0; double Rzz = 0.0; + double velX = 0.0; + double velY = 0.0; + double velZ = 0.0; + System.out.println("Connecting to: " + host + ":" + port); sd.connectToServer(host, port); @@ -263,26 +295,58 @@ public static void main(String[] args) throws IOException { line = sd.in.readLine(); field = line.split("\t"); - vehX = Double.parseDouble( field[1] ); - vehY = Double.parseDouble( field[2] ); - vehZ = Double.parseDouble( field[3] ); + f_init_x = Double.parseDouble( field[1] ); + f_init_y = Double.parseDouble( field[2] ); + f_init_z = Double.parseDouble( field[3] ); + + accX = Double.parseDouble( field[4] ); + accY = Double.parseDouble( field[5] ); + accZ = Double.parseDouble( field[6] ); + + angleX = Double.parseDouble( field[7] ); + angleY = Double.parseDouble( field[8] ); + angleZ = Double.parseDouble( field[9] ); + + f_angleX = Double.parseDouble( field[10] ); + f_angleY = Double.parseDouble( field[11] ); + f_angleZ = Double.parseDouble( field[12] ); + + forceX = Double.parseDouble( field[13] ); + forceY = Double.parseDouble( field[14] ); + forceZ = Double.parseDouble( field[15] ); + + omegaX = Double.parseDouble( field[16] ); + omegaY = Double.parseDouble( field[17] ); + omegaZ = Double.parseDouble( field[18] ); + + omegaDotX = Double.parseDouble( field[19] ); + omegaDotY = Double.parseDouble( field[20] ); + omegaDotZ = Double.parseDouble( field[21] ); + + posX = Double.parseDouble( field[21] ); + posY = Double.parseDouble( field[22] ); + posZ = Double.parseDouble( field[23] ); + + Rxx = Double.parseDouble( field[24] ); + Rxy = Double.parseDouble( field[25] ); + Rxz = Double.parseDouble( field[26] ); + Ryx = Double.parseDouble( field[27] ); + Ryy = Double.parseDouble( field[28] ); + Ryz = Double.parseDouble( field[29] ); + Rzx = Double.parseDouble( field[30] ); + Rzy = Double.parseDouble( field[31] ); + Rzz = Double.parseDouble( field[32] ); - Rxx = Double.parseDouble( field[4] ); - Rxy = Double.parseDouble( field[5] ); - Rxz = Double.parseDouble( field[6] ); - Ryx = Double.parseDouble( field[7] ); - Ryy = Double.parseDouble( field[8] ); - Ryz = Double.parseDouble( field[9] ); - Rzx = Double.parseDouble( field[10] ); - Rzy = Double.parseDouble( field[11] ); - Rzz = Double.parseDouble( field[12] ); + velX = Double.parseDouble( field[33] ); + velY = Double.parseDouble( field[34] ); + velZ = Double.parseDouble( field[35] ); - // Set the Vehicle position - SRBView.setVehPos(vehX, vehY, vehZ); + // Set the body position + SRBView.setBodyPos(posX, posY, posZ); SRBView.setBodyToWorldRotation( Rxx, Rxy, Rxz, - Ryx, Ryy, Ryz, - Rzx, Rzy, Rzz ); + Ryx, Ryy, Ryz, + Rzx, Rzy, Rzz ); } catch (IOException | NullPointerException e ) { go = false; From 394637a63b25abdfeb73fc5fc23fe1ef2a80b83e Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 10:22:58 -0500 Subject: [PATCH 10/40] Vertex model for crewModule; need to change to sphere later. --- .../src/SRBDisplay.java | 81 ++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index 147427846..965e2fbd7 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -93,7 +93,86 @@ public SRBView() { {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}}; - // NEED TO FILL THIS IN LATER WITH THE REMAINING INFORMATION. + + // NEED TO CHANGE THIS SO IT REFLECTS A SPHERE + veh_vrtx_body = new double[][] + { { 0.000, 0.000, 2.400}, /* 0 top point*/ + { 0.900, 0.000, 2.400}, /* 1 Upper ring */ + { 0.779, 0.450, 2.400}, /* 2 */ + { 0.450, 0.779, 2.400}, /* 3 */ + { 0.000, 0.900, 2.400}, /* 4 */ + {-0.450, 0.779, 2.400}, /* 5 */ + {-0.779, 0.450, 2.400}, /* 6 */ + {-0.900, 0.000, 2.400}, /* 7 */ + {-0.779,-0.450, 2.400}, /* 8 */ + {-0.450,-0.779, 2.400}, /* 9 */ + { 0.000,-0.900, 2.400}, /* 10 */ + { 0.450,-0.779, 2.400}, /* 11 */ + { 0.779,-0.450, 2.400}, /* 12 */ + { 2.500, 0.000,-0.100}, /* 13 Middle ring */ + { 2.166, 1.250,-0.100}, /* 14 */ + { 1.250, 2.166,-0.100}, /* 15 */ + { 0.000, 2.500,-0.100}, /* 16 */ + {-1.250, 2.166,-0.100}, /* 17 */ + {-2.166, 1.250,-0.100}, /* 18 */ + {-2.500, 0.000,-0.100}, /* 19 */ + {-2.166,-1.250,-0.100}, /* 20 */ + {-1.250,-2.166,-0.100}, /* 21 */ + { 0.000,-2.500,-0.100}, /* 22 */ + { 1.250,-2.166,-0.100}, /* 23 */ + { 2.166,-1.250,-0.100}, /* 24 */ + { 2.500, 0.000,-0.300}, /* 25 Lower ring */ + { 2.166, 1.250,-0.300}, /* 26 */ + { 1.250, 2.166,-0.300}, /* 27 */ + { 0.000, 2.500,-0.300}, /* 28 */ + {-1.250, 2.166,-0.300}, /* 29 */ + {-2.166, 1.250,-0.300}, /* 30 */ + {-2.500, 0.000,-0.300}, /* 31 */ + {-2.166,-1.250,-0.300}, /* 32 */ + {-1.250,-2.166,-0.300}, /* 33 */ + { 0.000,-2.500,-0.300}, /* 34 */ + { 1.250,-2.166,-0.300}, /* 35 */ + { 2.166,-1.250,-0.300}, /* 36 */ + { 0.000, 0.000,-0.900} /* 37 bottom point */ + }; + + veh_vrtx_world = new double[veh_vrtx_body.length][3]; + veh_vrtx_screen = new int[veh_vrtx_body.length][2]; + + // NEED TO CHANGE THIS WITH SPHERE MODEL + veh_edges = new int[][] + { /* connect top-center and upper ring */ + { 0, 1},{ 0, 2},{ 0, 3},{ 0, 4},{ 0, 5},{ 0, 6},{ 0, 7},{ 0, 8},{ 0, 9},{ 0,10},{ 0,11},{ 0,12}, + /* connect upper ring points */ + { 1, 2},{ 2, 3},{ 3, 4},{ 4, 5},{ 5, 6},{ 6, 7},{ 7, 8},{ 8, 9},{ 9,10},{10,11},{11,12},{12, 1}, + /* connect upper and middle rings */ + { 1,13},{ 2,14},{ 3,15},{ 4,16},{ 5,17},{ 6,18},{ 7,19},{ 8,20},{ 9,21},{10,22},{11,23},{12,24}, + /* connect middle ring points */ + {13,14},{14,15},{15,16},{16,17},{17,18},{18,19},{19,20},{20,21},{21,22},{22,23},{23,24},{24,13}, + /* connect middle and lower rings */ + {13,25},{14,26},{15,27},{16,28},{17,29},{18,30},{19,31},{20,32},{21,33},{22,34},{23,35},{24,36}, + /* connect lower ring points */ + {25,26},{26,27},{27,28},{28,29},{29,30},{30,31},{31,32},{32,33},{33,34},{34,35},{35,36},{36,25}, + /* connect lower points to bottom-center */ + {25,37},{26,37},{27,37},{28,37},{29,37},{30,37},{31,37},{32,37},{33,37},{34,37},{35,37},{36,37} + }; + + // The order of the vertices in each of the triangles is significant. The points should follow + // a path counter clock wise about the triangle's normal vector. The position normal side of + // the triangle is the visable side. + + // NEED TO CHANGE THIS WITH SPHERE MODEL + veh_triangles = new int[][] + { + { 0, 1, 2},{ 0, 2, 3},{ 0, 3, 4},{ 0, 4, 5},{ 0, 5, 6},{ 0, 6, 7},{ 0, 7, 8},{ 0, 8, 9},{ 0, 9,10},{ 0,10,11},{ 0,11,12},{ 0,12, 1}, + { 2, 1,13},{ 3, 2,14},{ 4, 3,15},{ 5, 4,16},{ 6, 5,17},{ 7, 6,18},{ 8, 7,19},{ 9, 8,20},{10, 9,21},{11,10,22},{12,11,23},{ 1,12,24}, + { 2,13,14},{ 3,14,15},{ 4,15,16},{ 5,16,17},{ 6,17,18},{ 7,18,19},{ 8,19,20},{ 9,20,21},{10,21,22},{11,22,23},{12,23,24},{1,24,13}, + {14,13,25},{15,14,26},{16,15,27},{17,16,28},{18,17,29},{19,18,30},{20,19,31},{21,20,32},{22,21,33},{23,22,34},{24,23,35},{13,24,36}, + {14,25,26},{15,26,27},{16,27,28},{17,28,29},{18,29,30},{19,30,31},{20,31,32},{21,32,33},{22,33,34},{23,34,35},{24,35,36},{13,36,25}, + {25,37,26},{26,37,27},{27,37,28},{28,37,29},{29,37,30},{30,37,31},{31,37,32},{32,37,33},{33,37,34},{34,37,35},{35,37,36},{36,37,25} + }; + + } From 4f1a2155b6f6cb1029138ab25f7e7c684a1becd3 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 11:00:42 -0500 Subject: [PATCH 11/40] Body and vantage positioning functions. --- .../src/SRBDisplay.java | 819 ++++++++++-------- 1 file changed, 446 insertions(+), 373 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index 965e2fbd7..27303b73f 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -31,150 +31,207 @@ * @author Aditya Girish */ - class SRBView extends JPanel { // Main body class of how we view the SRB. - - private int screen_half_width; - private int screen_half_height; - - private double illumination_vector[]; // World coordinates - - private double vantageAzimuth; // Secifies the direction of the celestial light source. - private double vantageElevation; - - private double vantageDistance; - private double beta; - - private double worldToVantageRotation[][]; - - private Color bodyLineColor; - private Color bodyFillColor; - - private double[] bodyPos; - - private double bodyToWorldRotation[][]; - - private double veh_vrtx_body[][]; - private double veh_vrtx_world[][]; - private int veh_vrtx_screen[][]; - - private int veh_edges[][]; - private int veh_triangles[][]; - - private double veh_unit_normals_body[][]; - private double veh_unit_normals_world[][]; - private double veh_unit_normals_vantage[][]; - - public SRBView() { - - ViewListener viewListener = new ViewListener(); - addMouseListener(viewListener); - addMouseMotionListener(viewListener); - - // Direction of light. - illumination_vector = new double[] {-0.707, 0.0, -0.707}; - - // Location of the observer, looking toward the world's origin. - vantageAzimuth = Math.toRadians(45.0); - vantageElevation = Math.toRadians(20.0); - vantageDistance = 12.0; - - // Half field of view angle - beta = Math.toRadians(40.0); - - worldToVantageRotation = new double[3][3]; - setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); - - bodyLineColor = Color.GRAY; - bodyFillColor = new Color(255, 255, 250); - - bodyPos = new double[] {0.0, 0.0, 0.0}; - - bodyToWorldRotation = new double[][] {{1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {0.0, 0.0, 1.0}}; - - - // NEED TO CHANGE THIS SO IT REFLECTS A SPHERE - veh_vrtx_body = new double[][] - { { 0.000, 0.000, 2.400}, /* 0 top point*/ - { 0.900, 0.000, 2.400}, /* 1 Upper ring */ - { 0.779, 0.450, 2.400}, /* 2 */ - { 0.450, 0.779, 2.400}, /* 3 */ - { 0.000, 0.900, 2.400}, /* 4 */ - {-0.450, 0.779, 2.400}, /* 5 */ - {-0.779, 0.450, 2.400}, /* 6 */ - {-0.900, 0.000, 2.400}, /* 7 */ - {-0.779,-0.450, 2.400}, /* 8 */ - {-0.450,-0.779, 2.400}, /* 9 */ - { 0.000,-0.900, 2.400}, /* 10 */ - { 0.450,-0.779, 2.400}, /* 11 */ - { 0.779,-0.450, 2.400}, /* 12 */ - { 2.500, 0.000,-0.100}, /* 13 Middle ring */ - { 2.166, 1.250,-0.100}, /* 14 */ - { 1.250, 2.166,-0.100}, /* 15 */ - { 0.000, 2.500,-0.100}, /* 16 */ - {-1.250, 2.166,-0.100}, /* 17 */ - {-2.166, 1.250,-0.100}, /* 18 */ - {-2.500, 0.000,-0.100}, /* 19 */ - {-2.166,-1.250,-0.100}, /* 20 */ - {-1.250,-2.166,-0.100}, /* 21 */ - { 0.000,-2.500,-0.100}, /* 22 */ - { 1.250,-2.166,-0.100}, /* 23 */ - { 2.166,-1.250,-0.100}, /* 24 */ - { 2.500, 0.000,-0.300}, /* 25 Lower ring */ - { 2.166, 1.250,-0.300}, /* 26 */ - { 1.250, 2.166,-0.300}, /* 27 */ - { 0.000, 2.500,-0.300}, /* 28 */ - {-1.250, 2.166,-0.300}, /* 29 */ - {-2.166, 1.250,-0.300}, /* 30 */ - {-2.500, 0.000,-0.300}, /* 31 */ - {-2.166,-1.250,-0.300}, /* 32 */ - {-1.250,-2.166,-0.300}, /* 33 */ - { 0.000,-2.500,-0.300}, /* 34 */ - { 1.250,-2.166,-0.300}, /* 35 */ - { 2.166,-1.250,-0.300}, /* 36 */ - { 0.000, 0.000,-0.900} /* 37 bottom point */ - }; - - veh_vrtx_world = new double[veh_vrtx_body.length][3]; - veh_vrtx_screen = new int[veh_vrtx_body.length][2]; - - // NEED TO CHANGE THIS WITH SPHERE MODEL - veh_edges = new int[][] - { /* connect top-center and upper ring */ - { 0, 1},{ 0, 2},{ 0, 3},{ 0, 4},{ 0, 5},{ 0, 6},{ 0, 7},{ 0, 8},{ 0, 9},{ 0,10},{ 0,11},{ 0,12}, - /* connect upper ring points */ - { 1, 2},{ 2, 3},{ 3, 4},{ 4, 5},{ 5, 6},{ 6, 7},{ 7, 8},{ 8, 9},{ 9,10},{10,11},{11,12},{12, 1}, - /* connect upper and middle rings */ - { 1,13},{ 2,14},{ 3,15},{ 4,16},{ 5,17},{ 6,18},{ 7,19},{ 8,20},{ 9,21},{10,22},{11,23},{12,24}, - /* connect middle ring points */ - {13,14},{14,15},{15,16},{16,17},{17,18},{18,19},{19,20},{20,21},{21,22},{22,23},{23,24},{24,13}, - /* connect middle and lower rings */ - {13,25},{14,26},{15,27},{16,28},{17,29},{18,30},{19,31},{20,32},{21,33},{22,34},{23,35},{24,36}, - /* connect lower ring points */ - {25,26},{26,27},{27,28},{28,29},{29,30},{30,31},{31,32},{32,33},{33,34},{34,35},{35,36},{36,25}, - /* connect lower points to bottom-center */ - {25,37},{26,37},{27,37},{28,37},{29,37},{30,37},{31,37},{32,37},{33,37},{34,37},{35,37},{36,37} - }; - - // The order of the vertices in each of the triangles is significant. The points should follow - // a path counter clock wise about the triangle's normal vector. The position normal side of - // the triangle is the visable side. - - // NEED TO CHANGE THIS WITH SPHERE MODEL - veh_triangles = new int[][] - { - { 0, 1, 2},{ 0, 2, 3},{ 0, 3, 4},{ 0, 4, 5},{ 0, 5, 6},{ 0, 6, 7},{ 0, 7, 8},{ 0, 8, 9},{ 0, 9,10},{ 0,10,11},{ 0,11,12},{ 0,12, 1}, - { 2, 1,13},{ 3, 2,14},{ 4, 3,15},{ 5, 4,16},{ 6, 5,17},{ 7, 6,18},{ 8, 7,19},{ 9, 8,20},{10, 9,21},{11,10,22},{12,11,23},{ 1,12,24}, - { 2,13,14},{ 3,14,15},{ 4,15,16},{ 5,16,17},{ 6,17,18},{ 7,18,19},{ 8,19,20},{ 9,20,21},{10,21,22},{11,22,23},{12,23,24},{1,24,13}, - {14,13,25},{15,14,26},{16,15,27},{17,16,28},{18,17,29},{19,18,30},{20,19,31},{21,20,32},{22,21,33},{23,22,34},{24,23,35},{13,24,36}, - {14,25,26},{15,26,27},{16,27,28},{17,28,29},{18,29,30},{19,30,31},{20,31,32},{21,32,33},{22,33,34},{23,34,35},{24,35,36},{13,36,25}, - {25,37,26},{26,37,27},{27,37,28},{28,37,29},{29,37,30},{30,37,31},{31,37,32},{32,37,33},{33,37,34},{34,37,35},{35,37,36},{36,37,25} - }; - +class SRBView extends JPanel { // Main body class of how we view the SRB. + + private int screen_half_width; + private int screen_half_height; + + private double illumination_vector[]; // World coordinates + + private double vantageAzimuth; // Secifies the direction of the celestial light source. + private double vantageElevation; + + private double vantageDistance; + private double beta; + + private double worldToVantageRotation[][]; + + private Color bodyLineColor; + private Color bodyFillColor; + + private double[] bodyPos; + + private double bodyToWorldRotation[][]; + + private double veh_vrtx_body[][]; + private double veh_vrtx_world[][]; + private int veh_vrtx_screen[][]; + + private int veh_edges[][]; + private int veh_triangles[][]; + + private double veh_unit_normals_body[][]; + private double veh_unit_normals_world[][]; + private double veh_unit_normals_vantage[][]; + + public SRBView() { + + ViewListener viewListener = new ViewListener(); + addMouseListener(viewListener); + addMouseMotionListener(viewListener); + + // Direction of light. + illumination_vector = new double[] {-0.707, 0.0, -0.707}; + + // Location of the observer, looking toward the world's origin. + vantageAzimuth = Math.toRadians(45.0); + vantageElevation = Math.toRadians(20.0); + vantageDistance = 12.0; + + // Half field of view angle + beta = Math.toRadians(40.0); + + worldToVantageRotation = new double[3][3]; + setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); + + bodyLineColor = Color.GRAY; + bodyFillColor = new Color(255, 255, 250); + + bodyPos = new double[] {0.0, 0.0, 0.0}; + + bodyToWorldRotation = new double[][] {{1.0, 0.0, 0.0}, + {0.0, 1.0, 0.0}, + {0.0, 0.0, 1.0}}; + + + // NEED TO CHANGE THIS SO IT REFLECTS A SPHERE + veh_vrtx_body = new double[][] + { { 0.000, 0.000, 2.400}, /* 0 top point*/ + { 0.900, 0.000, 2.400}, /* 1 Upper ring */ + { 0.779, 0.450, 2.400}, /* 2 */ + { 0.450, 0.779, 2.400}, /* 3 */ + { 0.000, 0.900, 2.400}, /* 4 */ + {-0.450, 0.779, 2.400}, /* 5 */ + {-0.779, 0.450, 2.400}, /* 6 */ + {-0.900, 0.000, 2.400}, /* 7 */ + {-0.779,-0.450, 2.400}, /* 8 */ + {-0.450,-0.779, 2.400}, /* 9 */ + { 0.000,-0.900, 2.400}, /* 10 */ + { 0.450,-0.779, 2.400}, /* 11 */ + { 0.779,-0.450, 2.400}, /* 12 */ + { 2.500, 0.000,-0.100}, /* 13 Middle ring */ + { 2.166, 1.250,-0.100}, /* 14 */ + { 1.250, 2.166,-0.100}, /* 15 */ + { 0.000, 2.500,-0.100}, /* 16 */ + {-1.250, 2.166,-0.100}, /* 17 */ + {-2.166, 1.250,-0.100}, /* 18 */ + {-2.500, 0.000,-0.100}, /* 19 */ + {-2.166,-1.250,-0.100}, /* 20 */ + {-1.250,-2.166,-0.100}, /* 21 */ + { 0.000,-2.500,-0.100}, /* 22 */ + { 1.250,-2.166,-0.100}, /* 23 */ + { 2.166,-1.250,-0.100}, /* 24 */ + { 2.500, 0.000,-0.300}, /* 25 Lower ring */ + { 2.166, 1.250,-0.300}, /* 26 */ + { 1.250, 2.166,-0.300}, /* 27 */ + { 0.000, 2.500,-0.300}, /* 28 */ + {-1.250, 2.166,-0.300}, /* 29 */ + {-2.166, 1.250,-0.300}, /* 30 */ + {-2.500, 0.000,-0.300}, /* 31 */ + {-2.166,-1.250,-0.300}, /* 32 */ + {-1.250,-2.166,-0.300}, /* 33 */ + { 0.000,-2.500,-0.300}, /* 34 */ + { 1.250,-2.166,-0.300}, /* 35 */ + { 2.166,-1.250,-0.300}, /* 36 */ + { 0.000, 0.000,-0.900} /* 37 bottom point */ + }; + + veh_vrtx_world = new double[veh_vrtx_body.length][3]; + veh_vrtx_screen = new int[veh_vrtx_body.length][2]; + + // NEED TO CHANGE THIS WITH SPHERE MODEL + veh_edges = new int[][] + { /* connect top-center and upper ring */ + { 0, 1},{ 0, 2},{ 0, 3},{ 0, 4},{ 0, 5},{ 0, 6},{ 0, 7},{ 0, 8},{ 0, 9},{ 0,10},{ 0,11},{ 0,12}, + /* connect upper ring points */ + { 1, 2},{ 2, 3},{ 3, 4},{ 4, 5},{ 5, 6},{ 6, 7},{ 7, 8},{ 8, 9},{ 9,10},{10,11},{11,12},{12, 1}, + /* connect upper and middle rings */ + { 1,13},{ 2,14},{ 3,15},{ 4,16},{ 5,17},{ 6,18},{ 7,19},{ 8,20},{ 9,21},{10,22},{11,23},{12,24}, + /* connect middle ring points */ + {13,14},{14,15},{15,16},{16,17},{17,18},{18,19},{19,20},{20,21},{21,22},{22,23},{23,24},{24,13}, + /* connect middle and lower rings */ + {13,25},{14,26},{15,27},{16,28},{17,29},{18,30},{19,31},{20,32},{21,33},{22,34},{23,35},{24,36}, + /* connect lower ring points */ + {25,26},{26,27},{27,28},{28,29},{29,30},{30,31},{31,32},{32,33},{33,34},{34,35},{35,36},{36,25}, + /* connect lower points to bottom-center */ + {25,37},{26,37},{27,37},{28,37},{29,37},{30,37},{31,37},{32,37},{33,37},{34,37},{35,37},{36,37} + }; + + // The order of the vertices in each of the triangles is significant. The points should follow + // a path counter clock wise about the triangle's normal vector. The position normal side of + // the triangle is the visable side. + + // NEED TO CHANGE THIS WITH SPHERE MODEL + veh_triangles = new int[][] + { + { 0, 1, 2},{ 0, 2, 3},{ 0, 3, 4},{ 0, 4, 5},{ 0, 5, 6},{ 0, 6, 7},{ 0, 7, 8},{ 0, 8, 9},{ 0, 9,10},{ 0,10,11},{ 0,11,12},{ 0,12, 1}, + { 2, 1,13},{ 3, 2,14},{ 4, 3,15},{ 5, 4,16},{ 6, 5,17},{ 7, 6,18},{ 8, 7,19},{ 9, 8,20},{10, 9,21},{11,10,22},{12,11,23},{ 1,12,24}, + { 2,13,14},{ 3,14,15},{ 4,15,16},{ 5,16,17},{ 6,17,18},{ 7,18,19},{ 8,19,20},{ 9,20,21},{10,21,22},{11,22,23},{12,23,24},{1,24,13}, + {14,13,25},{15,14,26},{16,15,27},{17,16,28},{18,17,29},{19,18,30},{20,19,31},{21,20,32},{22,21,33},{23,22,34},{24,23,35},{13,24,36}, + {14,25,26},{15,26,27},{16,27,28},{17,28,29},{18,29,30},{19,30,31},{20,31,32},{21,32,33},{22,33,34},{23,34,35},{24,35,36},{13,36,25}, + {25,37,26},{26,37,27},{27,37,28},{28,37,29},{29,37,30},{30,37,31},{31,37,32},{32,37,33},{33,37,34},{34,37,35},{35,37,36},{36,37,25} + }; + + // Create the normals for the triangles + veh_unit_normals_body = new double[veh_triangles.length][3]; + double v1[] = {0.0, 0.0, 0.0}; + double v2[] = {0.0, 0.0, 0.0}; + for (int i=0; i < veh_unit_normals_body.length; i++ ) { + MatrixOps.VminusV (v1, veh_vrtx_body[ veh_triangles[i][1] ], veh_vrtx_body[ veh_triangles[i][0] ]); + MatrixOps.VminusV (v2, veh_vrtx_body[ veh_triangles[i][2] ], veh_vrtx_body[ veh_triangles[i][0] ]); + MatrixOps.VcrossV (veh_unit_normals_body[i], v1, v2); + double vmag = MatrixOps.Vmagnitude(veh_unit_normals_body[i]); + MatrixOps.Vscale (veh_unit_normals_body[i], veh_unit_normals_body[i], 1.0/vmag); + } + + veh_unit_normals_world = new double[ veh_unit_normals_body.length ][3]; + veh_unit_normals_vantage = new double[ veh_unit_normals_body.length ][3]; + } + private class ViewListener extends MouseInputAdapter { + private int start_x; + private int start_y; + public void mousePressed(MouseEvent e) { + start_x = e.getX(); + start_y = e.getY(); + } + public void mouseDragged(MouseEvent e) { + int dx = ( e.getX() - start_x ); + int dy = ( start_y - e.getY()); + start_x = e.getX(); + start_y = e.getY(); + mouseVantage( dx, dy); + } + } + public void setVantageRange(double range) { + vantageDistance = range; + } + + public void setBodyToWorldRotation( double xx, double xy, double xz, + double yx, double yy, double yz, + double zx, double zy, double zz ) { + bodyToWorldRotation[0][0] = xx; + bodyToWorldRotation[0][1] = xy; + bodyToWorldRotation[0][2] = xz; + bodyToWorldRotation[1][0] = yx; + bodyToWorldRotation[1][1] = yy; + bodyToWorldRotation[1][2] = yz; + bodyToWorldRotation[2][0] = zx; + bodyToWorldRotation[2][1] = zy; + bodyToWorldRotation[2][2] = zz; + } + + public void mouseVantage(int dx, int dy) { + vantageAzimuth += (dx * Math.PI) / getWidth(); + if (vantageAzimuth > Math.PI) vantageAzimuth -= Math.PI; + if (vantageAzimuth < -Math.PI) vantageAzimuth += Math.PI; + vantageElevation -= (dy * Math.PI) / getHeight(); + if (vantageElevation > Math.toRadians( 89.0)) vantageElevation = Math.toRadians( 89.0); + if (vantageElevation < Math.toRadians(-89.0)) vantageElevation = Math.toRadians(-89.0); + setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); + repaint(); } public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. @@ -190,251 +247,267 @@ public void setAzElRotation(double RotationMatrix[][], double azimuth, double el { 0.0, 0.0, 1.0} }; MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); - } + } - } + public void worldToScreenPoint( int result[], double V_world[]) { + double V_vantage[] = new double[3]; + // Tranform vector in world coordinates to vantage coordinates. + MatrixOps.MtimesV(V_vantage, worldToVantageRotation, V_world); + // Perspective projection of point in 3D vantage coordinates to 2D screen coordinates. + double perspective_scale = screen_half_width/(Math.tan(beta)*(vantageDistance-V_vantage[0])); + result[0] = (int)(perspective_scale * V_vantage[1] + screen_half_width); + result[1] = (int)(screen_half_height - perspective_scale * V_vantage[2]); + } - public class SRBDisplay extends JFrame { - - private SingleRigidBodyView singleRigidBodyView; - private BufferedReader in; - private DataOutputStream out; - - public SRBDisplay( SingleRigidBodyView srbv) { // Creates the display window. - singleRigidBodyView = srbv; - add( singlRigidBodyView); - setTitle("SRB Display"); - setSize(1597, 987); - setLocationRelativeTo(null); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - } + public void setVehPos( double x, double y, double z) { + bodyPos[0] = x; + bodyPos[1] = y; + bodyPos[2] = z; + } - public void connectToServer( String host, int port ) throws IOException { // Connects to the server. - Socket socket = new Socket(host, port); - in = new BufferedReader( new InputStreamReader( socket.getInputStream())); - out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); - } + } - public void drawSRBView() { - singleRigidBodyView.repaint(); +public class SRBDisplay extends JFrame { + +private SingleRigidBodyView singleRigidBodyView; +private BufferedReader in; +private DataOutputStream out; + +public SRBDisplay( SingleRigidBodyView srbv) { // Creates the display window. + singleRigidBodyView = srbv; + add( singlRigidBodyView); + setTitle("SRB Display"); + setSize(1597, 987); + setLocationRelativeTo(null); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); +} + +public void connectToServer( String host, int port ) throws IOException { // Connects to the server. + Socket socket = new Socket(host, port); + in = new BufferedReader( new InputStreamReader( socket.getInputStream())); + out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); +} + +public void drawSRBView() { + singleRigidBodyView.repaint(); +} + +private static void printHelpText() { + System.out.println( + "----------------------------------------------------------------------\n" + + "usage: java jar SRBDisplay.jar \n" + + "----------------------------------------------------------------------\n" + ); +} + +public static void main(String[] args) throws IOException { + + String host = "localHost"; + int port = 0; + String bodyImageFile = null; + + int ii = 0; + while (ii < args.length) { + switch (args[ii]) { + case "-help" : + case "--help" : { + printHelpText(); + System.exit(0); + } break; + default : { + port = (Integer.parseInt(args[ii])); + } break; + } + ++ii; } - private static void printHelpText() { - System.out.println( - "----------------------------------------------------------------------\n" - + "usage: java jar SRBDisplay.jar \n" - + "----------------------------------------------------------------------\n" - ); + if (port == 0) { + System.out.println("No variable server port specified."); + printHelpText(); + System.exit(0); } - public static void main(String[] args) throws IOException { - - String host = "localHost"; - int port = 0; - String bodyImageFile = null; - - int ii = 0; - while (ii < args.length) { - switch (args[ii]) { - case "-help" : - case "--help" : { - printHelpText(); - System.exit(0); - } break; - default : { - port = (Integer.parseInt(args[ii])); - } break; - } - ++ii; - } - - if (port == 0) { - System.out.println("No variable server port specified."); - printHelpText(); - System.exit(0); + SRBModuleView srbModuleView = new SRBModuleView(); + + SRBDisplay sd = new SRBDisplay(SRBModuleView); + sd.setVisible(true); + + double f_init_x = 0.0; + double f_init_y = 0.0; + double f_init_z = 0.0; + + double accX = 0.0; + double accY = 0.0; + double accZ = 0.0; + + double angleX = 0.0; + double angleY = 0.0; + double angleZ = 0.0; + + double f_angleX = 0.0; + double f_angleY = 0.0; + double f_angleZ = 0.0; + + double forceX = 0.0; + double forceY = 0.0; + double forceZ = 0.0; + + double omegaX = 0.0; + double omegaY = 0.0; + double omegaZ = 0.0; + + double omegaDotX = 0.0; + double omegaDotY = 0.0; + double omegaDotZ = 0.0; + + double posX = 0.0; + double posY = 0.0; + double posZ = 0.0; + + double Rxx = 0.0; + double Rxy = 0.0; + double Rxz = 0.0; + double Ryx = 0.0; + double Ryy = 0.0; + double Ryz = 0.0; + double Rzx = 0.0; + double Rzy = 0.0; + double Rzz = 0.0; + + double velX = 0.0; + double velY = 0.0; + double velZ = 0.0; + + System.out.println("Connecting to: " + host + ":" + port); + sd.connectToServer(host, port); + + sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + + "trick.var_pause() \n" + + + "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP + "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + + "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + + + "trick.var_add(\"dyn.body.acc[0]\") \n" + + "trick.var_add(\"dyn.body.acc[1]\") \n" + + "trick.var_add(\"dyn.body.acc[2]\") \n" + + + "trick.var_add(\"dyn.body.angle[0]\") \n" + + "trick.var_add(\"dyn.body.angle[1]\") \n" + + "trick.var_add(\"dyn.body.angle[2]\") \n" + + + "trick.var_add(\"dyn.body.angle_force[0]\") \n" + + "trick.var_add(\"dyn.body.angle_force[1]\") \n" + + "trick.var_add(\"dyn.body.angle_force[2]\") \n" + + + "trick.var_add(\"dyn.body.force[0]\") \n" + + "trick.var_add(\"dyn.body.force[1]\") \n" + + "trick.var_add(\"dyn.body.force[2]\") \n" + + + "trick.var_add(\"dyn.body.omega[0]\") \n" + + "trick.var_add(\"dyn.body.omega[1]\") \n" + + "trick.var_add(\"dyn.body.omega[2]\") \n" + + + "trick.var_add(\"dyn.body.omegaDot[0]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[1]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[2]\") \n" + + + "trick.var_add(\"dyn.body.pos[0]\") \n" + + "trick.var_add(\"dyn.body.pos[1]\") \n" + + "trick.var_add(\"dyn.body.pos[2]\") \n" + + + "trick.var_add(\"dyn.body.rotate[0][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][2]\") \n" + + + "trick.var_add(\"dyn.body.vel[0]\") \n" + + "trick.var_add(\"dyn.body.vel[1]\") \n" + + "trick.var_add(\"dyn.body.vel[2]\") \n" + + + "trick.var_ascii() \n" + + "trick.var_cycle(0.1) \n" + + "trick.var_unpause()\n" ); + + sd.out.flush(); + + sd.drawSRBView(); + + Boolean go = true; + + while (go) { + String field[]; + try { + String line; + line = sd.in.readLine(); + field = line.split("\t"); + + f_init_x = Double.parseDouble( field[1] ); + f_init_y = Double.parseDouble( field[2] ); + f_init_z = Double.parseDouble( field[3] ); + + accX = Double.parseDouble( field[4] ); + accY = Double.parseDouble( field[5] ); + accZ = Double.parseDouble( field[6] ); + + angleX = Double.parseDouble( field[7] ); + angleY = Double.parseDouble( field[8] ); + angleZ = Double.parseDouble( field[9] ); + + f_angleX = Double.parseDouble( field[10] ); + f_angleY = Double.parseDouble( field[11] ); + f_angleZ = Double.parseDouble( field[12] ); + + forceX = Double.parseDouble( field[13] ); + forceY = Double.parseDouble( field[14] ); + forceZ = Double.parseDouble( field[15] ); + + omegaX = Double.parseDouble( field[16] ); + omegaY = Double.parseDouble( field[17] ); + omegaZ = Double.parseDouble( field[18] ); + + omegaDotX = Double.parseDouble( field[19] ); + omegaDotY = Double.parseDouble( field[20] ); + omegaDotZ = Double.parseDouble( field[21] ); + + posX = Double.parseDouble( field[21] ); + posY = Double.parseDouble( field[22] ); + posZ = Double.parseDouble( field[23] ); + + Rxx = Double.parseDouble( field[24] ); + Rxy = Double.parseDouble( field[25] ); + Rxz = Double.parseDouble( field[26] ); + Ryx = Double.parseDouble( field[27] ); + Ryy = Double.parseDouble( field[28] ); + Ryz = Double.parseDouble( field[29] ); + Rzx = Double.parseDouble( field[30] ); + Rzy = Double.parseDouble( field[31] ); + Rzz = Double.parseDouble( field[32] ); + + velX = Double.parseDouble( field[33] ); + velY = Double.parseDouble( field[34] ); + velZ = Double.parseDouble( field[35] ); + + // Set the body position + SRBView.setBodyPos(posX, posY, posZ); + + SRBView.setBodyToWorldRotation( Rxx, Rxy, Rxz, + Ryx, Ryy, Ryz, + Rzx, Rzy, Rzz ); + + } catch (IOException | NullPointerException e ) { + go = false; } - - SRBModuleView srbModuleView = new SRBModuleView(); - - SRBDisplay sd = new SRBDisplay(SRBModuleView); - sd.setVisible(true); - - double f_init_x = 0.0; - double f_init_y = 0.0; - double f_init_z = 0.0; - - double accX = 0.0; - double accY = 0.0; - double accZ = 0.0; - - double angleX = 0.0; - double angleY = 0.0; - double angleZ = 0.0; - - double f_angleX = 0.0; - double f_angleY = 0.0; - double f_angleZ = 0.0; - - double forceX = 0.0; - double forceY = 0.0; - double forceZ = 0.0; - - double omegaX = 0.0; - double omegaY = 0.0; - double omegaZ = 0.0; - - double omegaDotX = 0.0; - double omegaDotY = 0.0; - double omegaDotZ = 0.0; - - double posX = 0.0; - double posY = 0.0; - double posZ = 0.0; - - double Rxx = 0.0; - double Rxy = 0.0; - double Rxz = 0.0; - double Ryx = 0.0; - double Ryy = 0.0; - double Ryz = 0.0; - double Rzx = 0.0; - double Rzy = 0.0; - double Rzz = 0.0; - - double velX = 0.0; - double velY = 0.0; - double velZ = 0.0; - - System.out.println("Connecting to: " + host + ":" + port); - sd.connectToServer(host, port); - - sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + - "trick.var_pause() \n" + - - "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP - "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + - "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + - - "trick.var_add(\"dyn.body.acc[0]\") \n" + - "trick.var_add(\"dyn.body.acc[1]\") \n" + - "trick.var_add(\"dyn.body.acc[2]\") \n" + - - "trick.var_add(\"dyn.body.angle[0]\") \n" + - "trick.var_add(\"dyn.body.angle[1]\") \n" + - "trick.var_add(\"dyn.body.angle[2]\") \n" + - - "trick.var_add(\"dyn.body.angle_force[0]\") \n" + - "trick.var_add(\"dyn.body.angle_force[1]\") \n" + - "trick.var_add(\"dyn.body.angle_force[2]\") \n" + - - "trick.var_add(\"dyn.body.force[0]\") \n" + - "trick.var_add(\"dyn.body.force[1]\") \n" + - "trick.var_add(\"dyn.body.force[2]\") \n" + - - "trick.var_add(\"dyn.body.omega[0]\") \n" + - "trick.var_add(\"dyn.body.omega[1]\") \n" + - "trick.var_add(\"dyn.body.omega[2]\") \n" + - - "trick.var_add(\"dyn.body.omegaDot[0]\") \n" + - "trick.var_add(\"dyn.body.omegaDot[1]\") \n" + - "trick.var_add(\"dyn.body.omegaDot[2]\") \n" + - - "trick.var_add(\"dyn.body.pos[0]\") \n" + - "trick.var_add(\"dyn.body.pos[1]\") \n" + - "trick.var_add(\"dyn.body.pos[2]\") \n" + - - "trick.var_add(\"dyn.body.rotate[0][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[0][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[0][2]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][2]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][2]\") \n" + - - "trick.var_add(\"dyn.body.vel[0]\") \n" + - "trick.var_add(\"dyn.body.vel[1]\") \n" + - "trick.var_add(\"dyn.body.vel[2]\") \n" + - - "trick.var_ascii() \n" + - "trick.var_cycle(0.1) \n" + - "trick.var_unpause()\n" ); - - sd.out.flush(); - sd.drawSRBView(); - - Boolean go = true; - - while (go) { - String field[]; - try { - String line; - line = sd.in.readLine(); - field = line.split("\t"); - - f_init_x = Double.parseDouble( field[1] ); - f_init_y = Double.parseDouble( field[2] ); - f_init_z = Double.parseDouble( field[3] ); - - accX = Double.parseDouble( field[4] ); - accY = Double.parseDouble( field[5] ); - accZ = Double.parseDouble( field[6] ); - - angleX = Double.parseDouble( field[7] ); - angleY = Double.parseDouble( field[8] ); - angleZ = Double.parseDouble( field[9] ); - - f_angleX = Double.parseDouble( field[10] ); - f_angleY = Double.parseDouble( field[11] ); - f_angleZ = Double.parseDouble( field[12] ); - - forceX = Double.parseDouble( field[13] ); - forceY = Double.parseDouble( field[14] ); - forceZ = Double.parseDouble( field[15] ); - - omegaX = Double.parseDouble( field[16] ); - omegaY = Double.parseDouble( field[17] ); - omegaZ = Double.parseDouble( field[18] ); - - omegaDotX = Double.parseDouble( field[19] ); - omegaDotY = Double.parseDouble( field[20] ); - omegaDotZ = Double.parseDouble( field[21] ); - - posX = Double.parseDouble( field[21] ); - posY = Double.parseDouble( field[22] ); - posZ = Double.parseDouble( field[23] ); - - Rxx = Double.parseDouble( field[24] ); - Rxy = Double.parseDouble( field[25] ); - Rxz = Double.parseDouble( field[26] ); - Ryx = Double.parseDouble( field[27] ); - Ryy = Double.parseDouble( field[28] ); - Ryz = Double.parseDouble( field[29] ); - Rzx = Double.parseDouble( field[30] ); - Rzy = Double.parseDouble( field[31] ); - Rzz = Double.parseDouble( field[32] ); - - velX = Double.parseDouble( field[33] ); - velY = Double.parseDouble( field[34] ); - velZ = Double.parseDouble( field[35] ); - - // Set the body position - SRBView.setBodyPos(posX, posY, posZ); - - SRBView.setBodyToWorldRotation( Rxx, Rxy, Rxz, - Ryx, Ryy, Ryz, - Rzx, Rzy, Rzz ); - - } catch (IOException | NullPointerException e ) { - go = false; - } - sd.drawSRBView(); } } - } +} From 6c577c8278a3ec0f6bbfd0ee8eea3e233d8c5185 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 11:29:38 -0500 Subject: [PATCH 12/40] Drawing functions to create the model. --- .../src/SRBDisplay.java | 585 +++++++++++------- 1 file changed, 353 insertions(+), 232 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index 27303b73f..bd7eb6a50 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -259,255 +259,376 @@ public void worldToScreenPoint( int result[], double V_world[]) { result[1] = (int)(screen_half_height - perspective_scale * V_vantage[2]); } - public void setVehPos( double x, double y, double z) { + public void setBodyPos( double x, double y, double z) { bodyPos[0] = x; bodyPos[1] = y; bodyPos[2] = z; } + public void drawLineSegmentInWorld(Graphics2D g, Color color, double start[], double end[]) { + g.setPaint(color); + int start_screen[] = {0, 0}; + int end_screen[] = {0, 0}; + worldToScreenPoint( start_screen, start); + worldToScreenPoint( end_screen, end); + g.drawLine( start_screen[0], start_screen[1], end_screen[0], end_screen[1]); + } + + public void drawLabelInWorld(Graphics2D g, Color color, double loc_world[], String s) { + g.setPaint(color); + int loc_screen[] = {0, 0}; + worldToScreenPoint( loc_screen, loc_world); + g.drawString ( s, loc_screen[0], loc_screen[1]); + } + + private void doDrawing( Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + int width = getWidth(); + int height = getHeight(); + + screen_half_width = (width/2); + screen_half_height = (height/2); + + g2d.setPaint(Color.WHITE); + g2d.fillRect(0, 0, width, height); + + + // Draw the vehicle. + + // Transform the vehicle vertices from body -> world, apply the vehicle position offset, and then to 2D screen points. + for (int i=0; i World -> Vantage + MatrixOps.MtimesV(veh_unit_normals_world[i], bodyToWorldRotation, veh_unit_normals_body[i]); + MatrixOps.MtimesV(veh_unit_normals_vantage[i], worldToVantageRotation, veh_unit_normals_world[i]); + + // Render the triangle only if it's facing us. + double facing_angle = MatrixOps.VdotV(veh_unit_normals_vantage[i], LOS_vantage); + if ( (facing_angle > 0.0) && (facing_angle < Math.toRadians(90))) { + + // Calculate the diffuse reflection intensity. + double neg_illumination_vector[] = {0.0, 0.0, 0.0}; + MatrixOps.Vscale(neg_illumination_vector, illumination_vector, -1.0); + double diffuse_intensity = MatrixOps.VdotV(neg_illumination_vector, veh_unit_normals_world[i]); + if (diffuse_intensity < 0.0) diffuse_intensity = 0.0; + + // Proportion of the total light due to ambient light. + // (1.0 - ambient) is the proportion of reflected light. + double ambient = 0.8; // Must be between 0.0 and 1.0. + + // The color intensity is a combination of ambient light intensity, + // and diffuse reflection intensity. + double color_intensity = (ambient + (1.0 - ambient) * diffuse_intensity); + g2d.setPaint( new Color( (int)(vehicleFillColor.getRed() * color_intensity), + (int)(vehicleFillColor.getGreen() * color_intensity), + (int)(vehicleFillColor.getBlue() * color_intensity))); + // Draw the triangle. + int triangle_poly_x[] = {0, 0, 0}; + int triangle_poly_y[] = {0, 0, 0}; + // For each point of the triangle. + for (int j=0; j < 3; j++) { + + triangle_poly_x[j] = veh_vrtx_screen[ veh_triangles[i][j] ][0]; + triangle_poly_y[j] = veh_vrtx_screen[ veh_triangles[i][j] ][1]; + + } + g2d.fillPolygon(triangle_poly_x, triangle_poly_y, 3); + } + + // Draw Wireframe Model + + g2d.setPaint( vehicleLineColor ); + for (int i=0; i\n" - + "----------------------------------------------------------------------\n" - ); -} - -public static void main(String[] args) throws IOException { - - String host = "localHost"; - int port = 0; - String bodyImageFile = null; - - int ii = 0; - while (ii < args.length) { - switch (args[ii]) { - case "-help" : - case "--help" : { - printHelpText(); - System.exit(0); - } break; - default : { - port = (Integer.parseInt(args[ii])); - } break; - } - ++ii; + private SingleRigidBodyView singleRigidBodyView; + private BufferedReader in; + private DataOutputStream out; + + public SRBDisplay( SingleRigidBodyView srbv) { // Creates the display window. + singleRigidBodyView = srbv; + add( singlRigidBodyView); + setTitle("SRB Display"); + setSize(1597, 987); + setLocationRelativeTo(null); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } - if (port == 0) { - System.out.println("No variable server port specified."); - printHelpText(); - System.exit(0); + public void connectToServer( String host, int port ) throws IOException { // Connects to the server. + Socket socket = new Socket(host, port); + in = new BufferedReader( new InputStreamReader( socket.getInputStream())); + out = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); } - SRBModuleView srbModuleView = new SRBModuleView(); - - SRBDisplay sd = new SRBDisplay(SRBModuleView); - sd.setVisible(true); - - double f_init_x = 0.0; - double f_init_y = 0.0; - double f_init_z = 0.0; - - double accX = 0.0; - double accY = 0.0; - double accZ = 0.0; - - double angleX = 0.0; - double angleY = 0.0; - double angleZ = 0.0; - - double f_angleX = 0.0; - double f_angleY = 0.0; - double f_angleZ = 0.0; - - double forceX = 0.0; - double forceY = 0.0; - double forceZ = 0.0; - - double omegaX = 0.0; - double omegaY = 0.0; - double omegaZ = 0.0; - - double omegaDotX = 0.0; - double omegaDotY = 0.0; - double omegaDotZ = 0.0; - - double posX = 0.0; - double posY = 0.0; - double posZ = 0.0; - - double Rxx = 0.0; - double Rxy = 0.0; - double Rxz = 0.0; - double Ryx = 0.0; - double Ryy = 0.0; - double Ryz = 0.0; - double Rzx = 0.0; - double Rzy = 0.0; - double Rzz = 0.0; - - double velX = 0.0; - double velY = 0.0; - double velZ = 0.0; - - System.out.println("Connecting to: " + host + ":" + port); - sd.connectToServer(host, port); - - sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + - "trick.var_pause() \n" + - - "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP - "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + - "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + - - "trick.var_add(\"dyn.body.acc[0]\") \n" + - "trick.var_add(\"dyn.body.acc[1]\") \n" + - "trick.var_add(\"dyn.body.acc[2]\") \n" + - - "trick.var_add(\"dyn.body.angle[0]\") \n" + - "trick.var_add(\"dyn.body.angle[1]\") \n" + - "trick.var_add(\"dyn.body.angle[2]\") \n" + - - "trick.var_add(\"dyn.body.angle_force[0]\") \n" + - "trick.var_add(\"dyn.body.angle_force[1]\") \n" + - "trick.var_add(\"dyn.body.angle_force[2]\") \n" + - - "trick.var_add(\"dyn.body.force[0]\") \n" + - "trick.var_add(\"dyn.body.force[1]\") \n" + - "trick.var_add(\"dyn.body.force[2]\") \n" + - - "trick.var_add(\"dyn.body.omega[0]\") \n" + - "trick.var_add(\"dyn.body.omega[1]\") \n" + - "trick.var_add(\"dyn.body.omega[2]\") \n" + - - "trick.var_add(\"dyn.body.omegaDot[0]\") \n" + - "trick.var_add(\"dyn.body.omegaDot[1]\") \n" + - "trick.var_add(\"dyn.body.omegaDot[2]\") \n" + - - "trick.var_add(\"dyn.body.pos[0]\") \n" + - "trick.var_add(\"dyn.body.pos[1]\") \n" + - "trick.var_add(\"dyn.body.pos[2]\") \n" + - - "trick.var_add(\"dyn.body.rotate[0][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[0][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[0][2]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][2]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][2]\") \n" + - - "trick.var_add(\"dyn.body.vel[0]\") \n" + - "trick.var_add(\"dyn.body.vel[1]\") \n" + - "trick.var_add(\"dyn.body.vel[2]\") \n" + - - "trick.var_ascii() \n" + - "trick.var_cycle(0.1) \n" + - "trick.var_unpause()\n" ); - - sd.out.flush(); - - sd.drawSRBView(); - - Boolean go = true; - - while (go) { - String field[]; - try { - String line; - line = sd.in.readLine(); - field = line.split("\t"); - - f_init_x = Double.parseDouble( field[1] ); - f_init_y = Double.parseDouble( field[2] ); - f_init_z = Double.parseDouble( field[3] ); - - accX = Double.parseDouble( field[4] ); - accY = Double.parseDouble( field[5] ); - accZ = Double.parseDouble( field[6] ); - - angleX = Double.parseDouble( field[7] ); - angleY = Double.parseDouble( field[8] ); - angleZ = Double.parseDouble( field[9] ); - - f_angleX = Double.parseDouble( field[10] ); - f_angleY = Double.parseDouble( field[11] ); - f_angleZ = Double.parseDouble( field[12] ); - - forceX = Double.parseDouble( field[13] ); - forceY = Double.parseDouble( field[14] ); - forceZ = Double.parseDouble( field[15] ); - - omegaX = Double.parseDouble( field[16] ); - omegaY = Double.parseDouble( field[17] ); - omegaZ = Double.parseDouble( field[18] ); - - omegaDotX = Double.parseDouble( field[19] ); - omegaDotY = Double.parseDouble( field[20] ); - omegaDotZ = Double.parseDouble( field[21] ); - - posX = Double.parseDouble( field[21] ); - posY = Double.parseDouble( field[22] ); - posZ = Double.parseDouble( field[23] ); - - Rxx = Double.parseDouble( field[24] ); - Rxy = Double.parseDouble( field[25] ); - Rxz = Double.parseDouble( field[26] ); - Ryx = Double.parseDouble( field[27] ); - Ryy = Double.parseDouble( field[28] ); - Ryz = Double.parseDouble( field[29] ); - Rzx = Double.parseDouble( field[30] ); - Rzy = Double.parseDouble( field[31] ); - Rzz = Double.parseDouble( field[32] ); - - velX = Double.parseDouble( field[33] ); - velY = Double.parseDouble( field[34] ); - velZ = Double.parseDouble( field[35] ); - - // Set the body position - SRBView.setBodyPos(posX, posY, posZ); - - SRBView.setBodyToWorldRotation( Rxx, Rxy, Rxz, - Ryx, Ryy, Ryz, - Rzx, Rzy, Rzz ); - - } catch (IOException | NullPointerException e ) { - go = false; + public void drawSRBView() { + singleRigidBodyView.repaint(); + } + + private static void printHelpText() { + System.out.println( + "----------------------------------------------------------------------\n" + + "usage: java jar SRBDisplay.jar \n" + + "----------------------------------------------------------------------\n" + ); + } + + public static void main(String[] args) throws IOException { + + String host = "localHost"; + int port = 0; + String bodyImageFile = null; + + int ii = 0; + while (ii < args.length) { + switch (args[ii]) { + case "-help" : + case "--help" : { + printHelpText(); + System.exit(0); + } break; + default : { + port = (Integer.parseInt(args[ii])); + } break; + } + ++ii; } + + if (port == 0) { + System.out.println("No variable server port specified."); + printHelpText(); + System.exit(0); + } + + SRBModuleView srbModuleView = new SRBModuleView(); + + SRBDisplay sd = new SRBDisplay(SRBModuleView); + sd.setVisible(true); + + double f_init_x = 0.0; + double f_init_y = 0.0; + double f_init_z = 0.0; + + double accX = 0.0; + double accY = 0.0; + double accZ = 0.0; + + double angleX = 0.0; + double angleY = 0.0; + double angleZ = 0.0; + + double f_angleX = 0.0; + double f_angleY = 0.0; + double f_angleZ = 0.0; + + double forceX = 0.0; + double forceY = 0.0; + double forceZ = 0.0; + + double omegaX = 0.0; + double omegaY = 0.0; + double omegaZ = 0.0; + + double omegaDotX = 0.0; + double omegaDotY = 0.0; + double omegaDotZ = 0.0; + + double posX = 0.0; + double posY = 0.0; + double posZ = 0.0; + + double Rxx = 0.0; + double Rxy = 0.0; + double Rxz = 0.0; + double Ryx = 0.0; + double Ryy = 0.0; + double Ryz = 0.0; + double Rzx = 0.0; + double Rzy = 0.0; + double Rzz = 0.0; + + double velX = 0.0; + double velY = 0.0; + double velZ = 0.0; + + System.out.println("Connecting to: " + host + ":" + port); + sd.connectToServer(host, port); + + sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + + "trick.var_pause() \n" + + + "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP + "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + + "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + + + "trick.var_add(\"dyn.body.acc[0]\") \n" + + "trick.var_add(\"dyn.body.acc[1]\") \n" + + "trick.var_add(\"dyn.body.acc[2]\") \n" + + + "trick.var_add(\"dyn.body.angle[0]\") \n" + + "trick.var_add(\"dyn.body.angle[1]\") \n" + + "trick.var_add(\"dyn.body.angle[2]\") \n" + + + "trick.var_add(\"dyn.body.angle_force[0]\") \n" + + "trick.var_add(\"dyn.body.angle_force[1]\") \n" + + "trick.var_add(\"dyn.body.angle_force[2]\") \n" + + + "trick.var_add(\"dyn.body.force[0]\") \n" + + "trick.var_add(\"dyn.body.force[1]\") \n" + + "trick.var_add(\"dyn.body.force[2]\") \n" + + + "trick.var_add(\"dyn.body.omega[0]\") \n" + + "trick.var_add(\"dyn.body.omega[1]\") \n" + + "trick.var_add(\"dyn.body.omega[2]\") \n" + + + "trick.var_add(\"dyn.body.omegaDot[0]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[1]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[2]\") \n" + + + "trick.var_add(\"dyn.body.pos[0]\") \n" + + "trick.var_add(\"dyn.body.pos[1]\") \n" + + "trick.var_add(\"dyn.body.pos[2]\") \n" + + + "trick.var_add(\"dyn.body.rotate[0][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][2]\") \n" + + + "trick.var_add(\"dyn.body.vel[0]\") \n" + + "trick.var_add(\"dyn.body.vel[1]\") \n" + + "trick.var_add(\"dyn.body.vel[2]\") \n" + + + "trick.var_ascii() \n" + + "trick.var_cycle(0.1) \n" + + "trick.var_unpause()\n" ); + + sd.out.flush(); + sd.drawSRBView(); + + Boolean go = true; + + while (go) { + String field[]; + try { + String line; + line = sd.in.readLine(); + field = line.split("\t"); + + f_init_x = Double.parseDouble( field[1] ); + f_init_y = Double.parseDouble( field[2] ); + f_init_z = Double.parseDouble( field[3] ); + + accX = Double.parseDouble( field[4] ); + accY = Double.parseDouble( field[5] ); + accZ = Double.parseDouble( field[6] ); + + angleX = Double.parseDouble( field[7] ); + angleY = Double.parseDouble( field[8] ); + angleZ = Double.parseDouble( field[9] ); + + f_angleX = Double.parseDouble( field[10] ); + f_angleY = Double.parseDouble( field[11] ); + f_angleZ = Double.parseDouble( field[12] ); + + forceX = Double.parseDouble( field[13] ); + forceY = Double.parseDouble( field[14] ); + forceZ = Double.parseDouble( field[15] ); + + omegaX = Double.parseDouble( field[16] ); + omegaY = Double.parseDouble( field[17] ); + omegaZ = Double.parseDouble( field[18] ); + + omegaDotX = Double.parseDouble( field[19] ); + omegaDotY = Double.parseDouble( field[20] ); + omegaDotZ = Double.parseDouble( field[21] ); + + posX = Double.parseDouble( field[21] ); + posY = Double.parseDouble( field[22] ); + posZ = Double.parseDouble( field[23] ); + + Rxx = Double.parseDouble( field[24] ); + Rxy = Double.parseDouble( field[25] ); + Rxz = Double.parseDouble( field[26] ); + Ryx = Double.parseDouble( field[27] ); + Ryy = Double.parseDouble( field[28] ); + Ryz = Double.parseDouble( field[29] ); + Rzx = Double.parseDouble( field[30] ); + Rzy = Double.parseDouble( field[31] ); + Rzz = Double.parseDouble( field[32] ); + + velX = Double.parseDouble( field[33] ); + velY = Double.parseDouble( field[34] ); + velZ = Double.parseDouble( field[35] ); + + // Set the body position + SRBView.setBodyPos(posX, posY, posZ); + + SRBView.setBodyToWorldRotation( Rxx, Rxy, Rxz, + Ryx, Ryy, Ryz, + Rzx, Rzy, Rzz ); + + } catch (IOException | NullPointerException e ) { + go = false; + } + sd.drawSRBView(); + } } - } -} + } From 4e25925787e616ba09b64e719400d07d7c791f4b Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 11:52:22 -0500 Subject: [PATCH 13/40] Finished drawing functions for world. --- .../src/SRBDisplay.java | 345 +++++++++--------- 1 file changed, 173 insertions(+), 172 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index bd7eb6a50..2ede70ebe 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -189,202 +189,203 @@ public SRBView() { } - private class ViewListener extends MouseInputAdapter { - private int start_x; - private int start_y; - public void mousePressed(MouseEvent e) { - start_x = e.getX(); - start_y = e.getY(); - } - public void mouseDragged(MouseEvent e) { - int dx = ( e.getX() - start_x ); - int dy = ( start_y - e.getY()); + private class ViewListener extends MouseInputAdapter { + private int start_x; + private int start_y; + public void mousePressed(MouseEvent e) { start_x = e.getX(); start_y = e.getY(); - mouseVantage( dx, dy); - } } - - public void setVantageRange(double range) { - vantageDistance = range; + public void mouseDragged(MouseEvent e) { + int dx = ( e.getX() - start_x ); + int dy = ( start_y - e.getY()); + start_x = e.getX(); + start_y = e.getY(); + mouseVantage( dx, dy); } + } - public void setBodyToWorldRotation( double xx, double xy, double xz, - double yx, double yy, double yz, - double zx, double zy, double zz ) { - bodyToWorldRotation[0][0] = xx; - bodyToWorldRotation[0][1] = xy; - bodyToWorldRotation[0][2] = xz; - bodyToWorldRotation[1][0] = yx; - bodyToWorldRotation[1][1] = yy; - bodyToWorldRotation[1][2] = yz; - bodyToWorldRotation[2][0] = zx; - bodyToWorldRotation[2][1] = zy; - bodyToWorldRotation[2][2] = zz; - } + public void setVantageRange(double range) { + vantageDistance = range; + } - public void mouseVantage(int dx, int dy) { - vantageAzimuth += (dx * Math.PI) / getWidth(); - if (vantageAzimuth > Math.PI) vantageAzimuth -= Math.PI; - if (vantageAzimuth < -Math.PI) vantageAzimuth += Math.PI; - vantageElevation -= (dy * Math.PI) / getHeight(); - if (vantageElevation > Math.toRadians( 89.0)) vantageElevation = Math.toRadians( 89.0); - if (vantageElevation < Math.toRadians(-89.0)) vantageElevation = Math.toRadians(-89.0); - setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); - repaint(); - } + public void setBodyToWorldRotation( double xx, double xy, double xz, + double yx, double yy, double yz, + double zx, double zy, double zz ) { + bodyToWorldRotation[0][0] = xx; + bodyToWorldRotation[0][1] = xy; + bodyToWorldRotation[0][2] = xz; + bodyToWorldRotation[1][0] = yx; + bodyToWorldRotation[1][1] = yy; + bodyToWorldRotation[1][2] = yz; + bodyToWorldRotation[2][0] = zx; + bodyToWorldRotation[2][1] = zy; + bodyToWorldRotation[2][2] = zz; + } - public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. - double Rotation_about_Y[][] = { - { Math.cos(elevation), 0.0, Math.sin(elevation)}, - { 0.0, 1.0, 0.0}, - {-Math.sin(elevation), 0.0, Math.cos(elevation)} - }; - - double Rotation_about_Z[][] = { - {Math.cos(azimuth), -Math.sin(azimuth), 0.0}, - {Math.sin(azimuth), Math.cos(azimuth), 0.0}, - { 0.0, 0.0, 1.0} - }; - MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); - } + public void mouseVantage(int dx, int dy) { + vantageAzimuth += (dx * Math.PI) / getWidth(); + if (vantageAzimuth > Math.PI) vantageAzimuth -= Math.PI; + if (vantageAzimuth < -Math.PI) vantageAzimuth += Math.PI; + vantageElevation -= (dy * Math.PI) / getHeight(); + if (vantageElevation > Math.toRadians( 89.0)) vantageElevation = Math.toRadians( 89.0); + if (vantageElevation < Math.toRadians(-89.0)) vantageElevation = Math.toRadians(-89.0); + setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); + repaint(); + } - public void worldToScreenPoint( int result[], double V_world[]) { - double V_vantage[] = new double[3]; - // Tranform vector in world coordinates to vantage coordinates. - MatrixOps.MtimesV(V_vantage, worldToVantageRotation, V_world); - // Perspective projection of point in 3D vantage coordinates to 2D screen coordinates. - double perspective_scale = screen_half_width/(Math.tan(beta)*(vantageDistance-V_vantage[0])); - result[0] = (int)(perspective_scale * V_vantage[1] + screen_half_width); - result[1] = (int)(screen_half_height - perspective_scale * V_vantage[2]); - } + public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. + double Rotation_about_Y[][] = { + { Math.cos(elevation), 0.0, Math.sin(elevation)}, + { 0.0, 1.0, 0.0}, + {-Math.sin(elevation), 0.0, Math.cos(elevation)} + }; + + double Rotation_about_Z[][] = { + {Math.cos(azimuth), -Math.sin(azimuth), 0.0}, + {Math.sin(azimuth), Math.cos(azimuth), 0.0}, + { 0.0, 0.0, 1.0} + }; + MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); + } - public void setBodyPos( double x, double y, double z) { - bodyPos[0] = x; - bodyPos[1] = y; - bodyPos[2] = z; - } + public void worldToScreenPoint( int result[], double V_world[]) { + double V_vantage[] = new double[3]; + // Tranform vector in world coordinates to vantage coordinates. + MatrixOps.MtimesV(V_vantage, worldToVantageRotation, V_world); + // Perspective projection of point in 3D vantage coordinates to 2D screen coordinates. + double perspective_scale = screen_half_width/(Math.tan(beta)*(vantageDistance-V_vantage[0])); + result[0] = (int)(perspective_scale * V_vantage[1] + screen_half_width); + result[1] = (int)(screen_half_height - perspective_scale * V_vantage[2]); + } - public void drawLineSegmentInWorld(Graphics2D g, Color color, double start[], double end[]) { - g.setPaint(color); - int start_screen[] = {0, 0}; - int end_screen[] = {0, 0}; - worldToScreenPoint( start_screen, start); - worldToScreenPoint( end_screen, end); - g.drawLine( start_screen[0], start_screen[1], end_screen[0], end_screen[1]); - } + public void setBodyPos( double x, double y, double z) { + bodyPos[0] = x; + bodyPos[1] = y; + bodyPos[2] = z; + } - public void drawLabelInWorld(Graphics2D g, Color color, double loc_world[], String s) { - g.setPaint(color); - int loc_screen[] = {0, 0}; - worldToScreenPoint( loc_screen, loc_world); - g.drawString ( s, loc_screen[0], loc_screen[1]); - } + public void drawLineSegmentInWorld(Graphics2D g, Color color, double start[], double end[]) { + g.setPaint(color); + int start_screen[] = {0, 0}; + int end_screen[] = {0, 0}; + worldToScreenPoint( start_screen, start); + worldToScreenPoint( end_screen, end); + g.drawLine( start_screen[0], start_screen[1], end_screen[0], end_screen[1]); + } - private void doDrawing( Graphics g) { - Graphics2D g2d = (Graphics2D) g; + public void drawLabelInWorld(Graphics2D g, Color color, double loc_world[], String s) { + g.setPaint(color); + int loc_screen[] = {0, 0}; + worldToScreenPoint( loc_screen, loc_world); + g.drawString ( s, loc_screen[0], loc_screen[1]); + } - int width = getWidth(); - int height = getHeight(); + private void doDrawing( Graphics g) { + Graphics2D g2d = (Graphics2D) g; - screen_half_width = (width/2); - screen_half_height = (height/2); + int width = getWidth(); + int height = getHeight(); - g2d.setPaint(Color.WHITE); - g2d.fillRect(0, 0, width, height); + screen_half_width = (width/2); + screen_half_height = (height/2); - - // Draw the vehicle. + g2d.setPaint(Color.WHITE); + g2d.fillRect(0, 0, width, height); - // Transform the vehicle vertices from body -> world, apply the vehicle position offset, and then to 2D screen points. - for (int i=0; i world, apply the vehicle position offset, and then to 2D screen points. + for (int i=0; i World -> Vantage - MatrixOps.MtimesV(veh_unit_normals_world[i], bodyToWorldRotation, veh_unit_normals_body[i]); - MatrixOps.MtimesV(veh_unit_normals_vantage[i], worldToVantageRotation, veh_unit_normals_world[i]); - - // Render the triangle only if it's facing us. - double facing_angle = MatrixOps.VdotV(veh_unit_normals_vantage[i], LOS_vantage); - if ( (facing_angle > 0.0) && (facing_angle < Math.toRadians(90))) { - - // Calculate the diffuse reflection intensity. - double neg_illumination_vector[] = {0.0, 0.0, 0.0}; - MatrixOps.Vscale(neg_illumination_vector, illumination_vector, -1.0); - double diffuse_intensity = MatrixOps.VdotV(neg_illumination_vector, veh_unit_normals_world[i]); - if (diffuse_intensity < 0.0) diffuse_intensity = 0.0; - - // Proportion of the total light due to ambient light. - // (1.0 - ambient) is the proportion of reflected light. - double ambient = 0.8; // Must be between 0.0 and 1.0. - - // The color intensity is a combination of ambient light intensity, - // and diffuse reflection intensity. - double color_intensity = (ambient + (1.0 - ambient) * diffuse_intensity); - g2d.setPaint( new Color( (int)(vehicleFillColor.getRed() * color_intensity), - (int)(vehicleFillColor.getGreen() * color_intensity), - (int)(vehicleFillColor.getBlue() * color_intensity))); - // Draw the triangle. - int triangle_poly_x[] = {0, 0, 0}; - int triangle_poly_y[] = {0, 0, 0}; - // For each point of the triangle. - for (int j=0; j < 3; j++) { - - triangle_poly_x[j] = veh_vrtx_screen[ veh_triangles[i][j] ][0]; - triangle_poly_y[j] = veh_vrtx_screen[ veh_triangles[i][j] ][1]; - - } - g2d.fillPolygon(triangle_poly_x, triangle_poly_y, 3); - } + worldToScreenPoint (veh_vrtx_screen[i], veh_vrtx_world[i]); + } - // Draw Wireframe Model + // Draw Solid Model + + for (int i=0; i World -> Vantage + MatrixOps.MtimesV(veh_unit_normals_world[i], bodyToWorldRotation, veh_unit_normals_body[i]); + MatrixOps.MtimesV(veh_unit_normals_vantage[i], worldToVantageRotation, veh_unit_normals_world[i]); + + // Render the triangle only if it's facing us. + double facing_angle = MatrixOps.VdotV(veh_unit_normals_vantage[i], LOS_vantage); + if ( (facing_angle > 0.0) && (facing_angle < Math.toRadians(90))) { + + // Calculate the diffuse reflection intensity. + double neg_illumination_vector[] = {0.0, 0.0, 0.0}; + MatrixOps.Vscale(neg_illumination_vector, illumination_vector, -1.0); + double diffuse_intensity = MatrixOps.VdotV(neg_illumination_vector, veh_unit_normals_world[i]); + if (diffuse_intensity < 0.0) diffuse_intensity = 0.0; + + // Proportion of the total light due to ambient light. + // (1.0 - ambient) is the proportion of reflected light. + double ambient = 0.8; // Must be between 0.0 and 1.0. + + // The color intensity is a combination of ambient light intensity, + // and diffuse reflection intensity. + double color_intensity = (ambient + (1.0 - ambient) * diffuse_intensity); + g2d.setPaint( new Color( (int)(vehicleFillColor.getRed() * color_intensity), + (int)(vehicleFillColor.getGreen() * color_intensity), + (int)(vehicleFillColor.getBlue() * color_intensity))); + // Draw the triangle. + int triangle_poly_x[] = {0, 0, 0}; + int triangle_poly_y[] = {0, 0, 0}; + // For each point of the triangle. + for (int j=0; j < 3; j++) { + + triangle_poly_x[j] = veh_vrtx_screen[ veh_triangles[i][j] ][0]; + triangle_poly_y[j] = veh_vrtx_screen[ veh_triangles[i][j] ][1]; + + } + g2d.fillPolygon(triangle_poly_x, triangle_poly_y, 3); + } - g2d.setPaint( vehicleLineColor ); - for (int i=0; i Date: Mon, 26 Aug 2024 14:18:00 -0500 Subject: [PATCH 14/40] Changed some of the object names and variable names for sync. --- .../src/SRBDisplay.java | 64 ++++--------------- 1 file changed, 13 insertions(+), 51 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java index 2ede70ebe..c88b9b061 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java @@ -299,7 +299,7 @@ private void doDrawing( Graphics g) { // Transform the vehicle vertices from body -> world, apply the vehicle position offset, and then to 2D screen points. for (int i=0; i\n" @@ -449,9 +451,9 @@ public static void main(String[] args) throws IOException { System.exit(0); } - SRBModuleView srbModuleView = new SRBModuleView(); + SingleRigidBodyView singleRigidBodyView = new SingleRigidBodyView(); - SRBDisplay sd = new SRBDisplay(SRBModuleView); + SRBDisplay sd = new SRBDisplay(singleRigidBodyView); sd.setVisible(true); double f_init_x = 0.0; @@ -616,9 +618,9 @@ public static void main(String[] args) throws IOException { velZ = Double.parseDouble( field[35] ); // Set the body position - SRBView.setBodyPos(posX, posY, posZ); + singleRigidBodyView.setBodyPos(posX, posY, posZ); - SRBView.setBodyToWorldRotation( Rxx, Rxy, Rxz, + singleRigidBodyView.setBodyToWorldRotation( Rxx, Rxy, Rxz, Ryx, Ryy, Ryz, Rzx, Rzy, Rzz ); @@ -629,44 +631,4 @@ public static void main(String[] args) throws IOException { } } - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - } \ No newline at end of file +} \ No newline at end of file From 88c85ef74bae4d8e93e05a4da22bf29c15e33ed5 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 15:54:05 -0500 Subject: [PATCH 15/40] Added Makefile. --- .../models/singlerigidbodygraphics/src/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/Makefile diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/Makefile b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/Makefile new file mode 100644 index 000000000..d3e0cbc07 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/Makefile @@ -0,0 +1,6 @@ + +all: + mvn package + +clean: + rm -rf build From 9533db003740709bdbe3e3f41ae92c8b5616b0ca Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 15:58:18 -0500 Subject: [PATCH 16/40] Added POM file. --- .../models/singlerigidbodygraphics/pom.xml | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/pom.xml diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/pom.xml b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/pom.xml new file mode 100644 index 000000000..9aa0f4421 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/pom.xml @@ -0,0 +1,121 @@ + + + + 4.0.0 + + trick-java + trick-java + 23.0.0-beta + + trick-java + + https://github.com/nasa/trick + + + UTF-8 + 1.8 + 1.8 + + + + + junit + junit + 4.13.1 + test + + + + + + SingleRigidBodyDisplay + + build + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.1.1 + + ${java.home}/bin/javadoc + ../../share/doc/trick/java + + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + + maven-resources-plugin + 3.0.2 + + + + maven-compiler-plugin + 3.8.0 + + + -g + -Xlint:unchecked + -Xlint:deprecation + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.0 + + + + true + lib/ + trick.SRBDisplay + + + + + + + maven-surefire-plugin + 2.22.1 + + + + maven-install-plugin + 2.5.2 + + + + maven-deploy-plugin + 2.8.2 + + + + + maven-site-plugin + 3.7.1 + + + + + + + + \ No newline at end of file From 45c12b97cd7cc13ed49e91e4a2cc17c92fee2f53 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Mon, 26 Aug 2024 16:05:11 -0500 Subject: [PATCH 17/40] Graphics client starter added to input file. --- .../SIM_singlerigidbody/RUN_test/input.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/trick_sims/SIM_singlerigidbody/RUN_test/input.py b/trick_sims/SIM_singlerigidbody/RUN_test/input.py index b4e8e7395..424b89765 100644 --- a/trick_sims/SIM_singlerigidbody/RUN_test/input.py +++ b/trick_sims/SIM_singlerigidbody/RUN_test/input.py @@ -79,3 +79,23 @@ # This tells the sim to stop after a few seconds # ============================================================================ - trick.stop(10.0) + + + +#========================================== +# Start the Graphics Client +#========================================== +varServerPort = trick.var_server_get_port(); +SRBDisplay_path = "models/singlerigidbodygraphics/build/SRBDisplay.jar" + +if (os.path.isfile(SRBDisplay_path)) : + SRBDisplay_cmd = "java -jar " \ + + SRBDisplay_path \ + + " " + str(varServerPort) + " &" ; + print(SRBDisplay_cmd) + os.system(SRBDisplay_cmd); +else : + print('===================================================================================================') + print('SRBDisplay needs to be built. Please \"cd\" into ../models/graphics and type \"make\".') + print('===================================================================================================') + From 60bfbc4bf9a2e101348c2d562a81f1c43526910b Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 27 Aug 2024 08:53:53 -0500 Subject: [PATCH 18/40] Changed paths in S_define to reflect current file structure. --- trick_sims/SIM_singlerigidbody/S_define | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/S_define b/trick_sims/SIM_singlerigidbody/S_define index f14082c52..04f1f57a7 100644 --- a/trick_sims/SIM_singlerigidbody/S_define +++ b/trick_sims/SIM_singlerigidbody/S_define @@ -2,7 +2,7 @@ PURPOSE: ( Single body rigid dynamics simulation ) LIBRARY DEPENDENCIES: - ((src/body.cpp) + ((singlerigidbody/src/body.cpp) ) *************************************************************/ #define TRICK_NO_MONTE_CARLO @@ -12,7 +12,7 @@ LIBRARY DEPENDENCIES: #define TRICK_NO_ZEROCONF #include "sim_objects/default_trick_sys.sm" -##include "include/body.hh" +##include "singlerigidbody/include/body.hh" class BodySimObject : public Trick::SimObject { public: BODY body; From 0bd8835b278cb06474ef53d79159bc206c5e35e5 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 27 Aug 2024 08:56:39 -0500 Subject: [PATCH 19/40] More accurate cd error message in input file. --- trick_sims/SIM_singlerigidbody/RUN_test/input.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/RUN_test/input.py b/trick_sims/SIM_singlerigidbody/RUN_test/input.py index 424b89765..2eddfae40 100644 --- a/trick_sims/SIM_singlerigidbody/RUN_test/input.py +++ b/trick_sims/SIM_singlerigidbody/RUN_test/input.py @@ -95,7 +95,7 @@ print(SRBDisplay_cmd) os.system(SRBDisplay_cmd); else : - print('===================================================================================================') - print('SRBDisplay needs to be built. Please \"cd\" into ../models/graphics and type \"make\".') - print('===================================================================================================') + print('======================================================================================================') + print('SRBDisplay needs to be built. Please \"cd\" into ../models/singlerigidbodygraphics and type \"make\".') + print('======================================================================================================') From f67b5b80716c8858af15fe3aa72d86092eb137c9 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 28 Aug 2024 11:35:57 -0500 Subject: [PATCH 20/40] Color hardcoded for testing purposes and getting the sim running. --- .../java/trick/srbdisplay/SRBDisplay.java | 639 ++++++++++++++++++ 1 file changed, 639 insertions(+) create mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java new file mode 100644 index 000000000..6a06d1d04 --- /dev/null +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -0,0 +1,639 @@ +// This file contains the architecture for the single rigid body simulation's 3D graphics client. + +package trick; + +// AWT is the abstract window toolkit. +import java.awt.Graphics2D; +import java.awt.Graphics; +import java.awt.Color; +import java.awt.event.MouseEvent; + +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.FileReader; + +import java.net.Socket; + +import java.util.*; + +// Swing is a GUI widget toolkit. +import javax.swing.JFrame; // Allows you to manage a top-level window. +import javax.swing.JPanel; // The stuff within the window (controls, buttons, etc.). +//import javax.swing.JViewport.ViewListener; +import javax.swing.event.MouseInputAdapter; + +import trick.matrixOps.MatrixOps; + +/** + * @author Aditya Girish + */ + +class SingleRigidBodyView extends JPanel { // Main body class of how we view the SRB. + + private int screen_half_width; + private int screen_half_height; + + private double illumination_vector[]; // World coordinates + + private double vantageAzimuth; // Secifies the direction of the celestial light source. + private double vantageElevation; + + private double vantageDistance; + private double beta; + + private double worldToVantageRotation[][]; + + private Color bodyLineColor; + private Color bodyFillColor; + + private double[] bodyPos; + + private double bodyToWorldRotation[][]; + + private double veh_vrtx_body[][]; + private double veh_vrtx_world[][]; + private int veh_vrtx_screen[][]; + + private int veh_edges[][]; + private int veh_triangles[][]; + + private double veh_unit_normals_body[][]; + private double veh_unit_normals_world[][]; + private double veh_unit_normals_vantage[][]; + + public SingleRigidBodyView() { + + ViewListener viewListener = new ViewListener(); + addMouseListener(viewListener); + addMouseMotionListener(viewListener); + + // Direction of light. + illumination_vector = new double[] {-0.707, 0.0, -0.707}; + + // Location of the observer, looking toward the world's origin. + vantageAzimuth = Math.toRadians(45.0); + vantageElevation = Math.toRadians(20.0); + vantageDistance = 12.0; + + // Half field of view angle + beta = Math.toRadians(40.0); + + worldToVantageRotation = new double[3][3]; + setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); + + bodyLineColor = Color.GRAY; + bodyFillColor = new Color(255, 255, 250); + + bodyPos = new double[] {0.0, 0.0, 0.0}; + + bodyToWorldRotation = new double[][] {{1.0, 0.0, 0.0}, + {0.0, 1.0, 0.0}, + {0.0, 0.0, 1.0}}; + + + // NEED TO CHANGE THIS SO IT REFLECTS A SPHERE + veh_vrtx_body = new double[][] + { { 0.000, 0.000, 2.400}, /* 0 top point*/ + { 0.900, 0.000, 2.400}, /* 1 Upper ring */ + { 0.779, 0.450, 2.400}, /* 2 */ + { 0.450, 0.779, 2.400}, /* 3 */ + { 0.000, 0.900, 2.400}, /* 4 */ + {-0.450, 0.779, 2.400}, /* 5 */ + {-0.779, 0.450, 2.400}, /* 6 */ + {-0.900, 0.000, 2.400}, /* 7 */ + {-0.779,-0.450, 2.400}, /* 8 */ + {-0.450,-0.779, 2.400}, /* 9 */ + { 0.000,-0.900, 2.400}, /* 10 */ + { 0.450,-0.779, 2.400}, /* 11 */ + { 0.779,-0.450, 2.400}, /* 12 */ + { 2.500, 0.000,-0.100}, /* 13 Middle ring */ + { 2.166, 1.250,-0.100}, /* 14 */ + { 1.250, 2.166,-0.100}, /* 15 */ + { 0.000, 2.500,-0.100}, /* 16 */ + {-1.250, 2.166,-0.100}, /* 17 */ + {-2.166, 1.250,-0.100}, /* 18 */ + {-2.500, 0.000,-0.100}, /* 19 */ + {-2.166,-1.250,-0.100}, /* 20 */ + {-1.250,-2.166,-0.100}, /* 21 */ + { 0.000,-2.500,-0.100}, /* 22 */ + { 1.250,-2.166,-0.100}, /* 23 */ + { 2.166,-1.250,-0.100}, /* 24 */ + { 2.500, 0.000,-0.300}, /* 25 Lower ring */ + { 2.166, 1.250,-0.300}, /* 26 */ + { 1.250, 2.166,-0.300}, /* 27 */ + { 0.000, 2.500,-0.300}, /* 28 */ + {-1.250, 2.166,-0.300}, /* 29 */ + {-2.166, 1.250,-0.300}, /* 30 */ + {-2.500, 0.000,-0.300}, /* 31 */ + {-2.166,-1.250,-0.300}, /* 32 */ + {-1.250,-2.166,-0.300}, /* 33 */ + { 0.000,-2.500,-0.300}, /* 34 */ + { 1.250,-2.166,-0.300}, /* 35 */ + { 2.166,-1.250,-0.300}, /* 36 */ + { 0.000, 0.000,-0.900} /* 37 bottom point */ + }; + + veh_vrtx_world = new double[veh_vrtx_body.length][3]; + veh_vrtx_screen = new int[veh_vrtx_body.length][2]; + + // NEED TO CHANGE THIS WITH SPHERE MODEL + veh_edges = new int[][] + { /* connect top-center and upper ring */ + { 0, 1},{ 0, 2},{ 0, 3},{ 0, 4},{ 0, 5},{ 0, 6},{ 0, 7},{ 0, 8},{ 0, 9},{ 0,10},{ 0,11},{ 0,12}, + /* connect upper ring points */ + { 1, 2},{ 2, 3},{ 3, 4},{ 4, 5},{ 5, 6},{ 6, 7},{ 7, 8},{ 8, 9},{ 9,10},{10,11},{11,12},{12, 1}, + /* connect upper and middle rings */ + { 1,13},{ 2,14},{ 3,15},{ 4,16},{ 5,17},{ 6,18},{ 7,19},{ 8,20},{ 9,21},{10,22},{11,23},{12,24}, + /* connect middle ring points */ + {13,14},{14,15},{15,16},{16,17},{17,18},{18,19},{19,20},{20,21},{21,22},{22,23},{23,24},{24,13}, + /* connect middle and lower rings */ + {13,25},{14,26},{15,27},{16,28},{17,29},{18,30},{19,31},{20,32},{21,33},{22,34},{23,35},{24,36}, + /* connect lower ring points */ + {25,26},{26,27},{27,28},{28,29},{29,30},{30,31},{31,32},{32,33},{33,34},{34,35},{35,36},{36,25}, + /* connect lower points to bottom-center */ + {25,37},{26,37},{27,37},{28,37},{29,37},{30,37},{31,37},{32,37},{33,37},{34,37},{35,37},{36,37} + }; + + // The order of the vertices in each of the triangles is significant. The points should follow + // a path counter clock wise about the triangle's normal vector. The position normal side of + // the triangle is the visable side. + + // NEED TO CHANGE THIS WITH SPHERE MODEL + veh_triangles = new int[][] + { + { 0, 1, 2},{ 0, 2, 3},{ 0, 3, 4},{ 0, 4, 5},{ 0, 5, 6},{ 0, 6, 7},{ 0, 7, 8},{ 0, 8, 9},{ 0, 9,10},{ 0,10,11},{ 0,11,12},{ 0,12, 1}, + { 2, 1,13},{ 3, 2,14},{ 4, 3,15},{ 5, 4,16},{ 6, 5,17},{ 7, 6,18},{ 8, 7,19},{ 9, 8,20},{10, 9,21},{11,10,22},{12,11,23},{ 1,12,24}, + { 2,13,14},{ 3,14,15},{ 4,15,16},{ 5,16,17},{ 6,17,18},{ 7,18,19},{ 8,19,20},{ 9,20,21},{10,21,22},{11,22,23},{12,23,24},{1,24,13}, + {14,13,25},{15,14,26},{16,15,27},{17,16,28},{18,17,29},{19,18,30},{20,19,31},{21,20,32},{22,21,33},{23,22,34},{24,23,35},{13,24,36}, + {14,25,26},{15,26,27},{16,27,28},{17,28,29},{18,29,30},{19,30,31},{20,31,32},{21,32,33},{22,33,34},{23,34,35},{24,35,36},{13,36,25}, + {25,37,26},{26,37,27},{27,37,28},{28,37,29},{29,37,30},{30,37,31},{31,37,32},{32,37,33},{33,37,34},{34,37,35},{35,37,36},{36,37,25} + }; + + // Create the normals for the triangles + veh_unit_normals_body = new double[veh_triangles.length][3]; + double v1[] = {0.0, 0.0, 0.0}; + double v2[] = {0.0, 0.0, 0.0}; + for (int i=0; i < veh_unit_normals_body.length; i++ ) { + MatrixOps.VminusV (v1, veh_vrtx_body[ veh_triangles[i][1] ], veh_vrtx_body[ veh_triangles[i][0] ]); + MatrixOps.VminusV (v2, veh_vrtx_body[ veh_triangles[i][2] ], veh_vrtx_body[ veh_triangles[i][0] ]); + MatrixOps.VcrossV (veh_unit_normals_body[i], v1, v2); + double vmag = MatrixOps.Vmagnitude(veh_unit_normals_body[i]); + MatrixOps.Vscale (veh_unit_normals_body[i], veh_unit_normals_body[i], 1.0/vmag); + } + + veh_unit_normals_world = new double[ veh_unit_normals_body.length ][3]; + veh_unit_normals_vantage = new double[ veh_unit_normals_body.length ][3]; + + } + + private class ViewListener extends MouseInputAdapter { + private int start_x; + private int start_y; + public void mousePressed(MouseEvent e) { + start_x = e.getX(); + start_y = e.getY(); + } + public void mouseDragged(MouseEvent e) { + int dx = ( e.getX() - start_x ); + int dy = ( start_y - e.getY()); + start_x = e.getX(); + start_y = e.getY(); + mouseVantage( dx, dy); + } + } + + public void setVantageRange(double range) { + vantageDistance = range; + } + + public void setBodyToWorldRotation( double xx, double xy, double xz, + double yx, double yy, double yz, + double zx, double zy, double zz ) { + bodyToWorldRotation[0][0] = xx; + bodyToWorldRotation[0][1] = xy; + bodyToWorldRotation[0][2] = xz; + bodyToWorldRotation[1][0] = yx; + bodyToWorldRotation[1][1] = yy; + bodyToWorldRotation[1][2] = yz; + bodyToWorldRotation[2][0] = zx; + bodyToWorldRotation[2][1] = zy; + bodyToWorldRotation[2][2] = zz; + } + + public void mouseVantage(int dx, int dy) { + vantageAzimuth += (dx * Math.PI) / getWidth(); + if (vantageAzimuth > Math.PI) vantageAzimuth -= Math.PI; + if (vantageAzimuth < -Math.PI) vantageAzimuth += Math.PI; + vantageElevation -= (dy * Math.PI) / getHeight(); + if (vantageElevation > Math.toRadians( 89.0)) vantageElevation = Math.toRadians( 89.0); + if (vantageElevation < Math.toRadians(-89.0)) vantageElevation = Math.toRadians(-89.0); + setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); + repaint(); + } + + public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. + double Rotation_about_Y[][] = { + { Math.cos(elevation), 0.0, Math.sin(elevation)}, + { 0.0, 1.0, 0.0}, + {-Math.sin(elevation), 0.0, Math.cos(elevation)} + }; + + double Rotation_about_Z[][] = { + {Math.cos(azimuth), -Math.sin(azimuth), 0.0}, + {Math.sin(azimuth), Math.cos(azimuth), 0.0}, + { 0.0, 0.0, 1.0} + }; + MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); + } + + public void worldToScreenPoint( int result[], double V_world[]) { + double V_vantage[] = new double[3]; + // Tranform vector in world coordinates to vantage coordinates. + MatrixOps.MtimesV(V_vantage, worldToVantageRotation, V_world); + // Perspective projection of point in 3D vantage coordinates to 2D screen coordinates. + double perspective_scale = screen_half_width/(Math.tan(beta)*(vantageDistance-V_vantage[0])); + result[0] = (int)(perspective_scale * V_vantage[1] + screen_half_width); + result[1] = (int)(screen_half_height - perspective_scale * V_vantage[2]); + } + + public void setBodyPos( double x, double y, double z) { + bodyPos[0] = x; + bodyPos[1] = y; + bodyPos[2] = z; + } + + public void drawLineSegmentInWorld(Graphics2D g, Color color, double start[], double end[]) { + g.setPaint(color); + int start_screen[] = {0, 0}; + int end_screen[] = {0, 0}; + worldToScreenPoint( start_screen, start); + worldToScreenPoint( end_screen, end); + g.drawLine( start_screen[0], start_screen[1], end_screen[0], end_screen[1]); + } + + public void drawLabelInWorld(Graphics2D g, Color color, double loc_world[], String s) { + g.setPaint(color); + int loc_screen[] = {0, 0}; + worldToScreenPoint( loc_screen, loc_world); + g.drawString ( s, loc_screen[0], loc_screen[1]); + } + + private void doDrawing( Graphics g) { + Graphics2D g2d = (Graphics2D) g; + + int width = getWidth(); + int height = getHeight(); + + screen_half_width = (width/2); + screen_half_height = (height/2); + + g2d.setPaint(Color.WHITE); + g2d.fillRect(0, 0, width, height); + + + // Draw the vehicle. + + // Transform the vehicle vertices from body -> world, apply the vehicle position offset, and then to 2D screen points. + for (int i=0; i World -> Vantage + MatrixOps.MtimesV(veh_unit_normals_world[i], bodyToWorldRotation, veh_unit_normals_body[i]); + MatrixOps.MtimesV(veh_unit_normals_vantage[i], worldToVantageRotation, veh_unit_normals_world[i]); + + // Render the triangle only if it's facing us. + double facing_angle = MatrixOps.VdotV(veh_unit_normals_vantage[i], LOS_vantage); + if ( (facing_angle > 0.0) && (facing_angle < Math.toRadians(90))) { + + // Calculate the diffuse reflection intensity. + double neg_illumination_vector[] = {0.0, 0.0, 0.0}; + MatrixOps.Vscale(neg_illumination_vector, illumination_vector, -1.0); + double diffuse_intensity = MatrixOps.VdotV(neg_illumination_vector, veh_unit_normals_world[i]); + if (diffuse_intensity < 0.0) diffuse_intensity = 0.0; + + // Proportion of the total light due to ambient light. + // (1.0 - ambient) is the proportion of reflected light. + double ambient = 0.8; // Must be between 0.0 and 1.0. + + // The color intensity is a combination of ambient light intensity, + // and diffuse reflection intensity. + double color_intensity = (ambient + (1.0 - ambient) * diffuse_intensity); + + + g2d.setPaint(new Color( 220, 220, 220)); // FOR TESTING. ================================================================================================================================ + + /* g2d.setPaint( new Color( (int)(bodyFillColor.getRed() * color_intensity), + (int)(bodyFillColor.getGreen() * color_intensity), + (int)(bodyFillColor.getBlue() * color_intensity))); == CHANGE LATER */ + + // Draw the triangle. + int triangle_poly_x[] = {0, 0, 0}; + int triangle_poly_y[] = {0, 0, 0}; + // For each point of the triangle. + for (int j=0; j < 3; j++) { + + triangle_poly_x[j] = veh_vrtx_screen[ veh_triangles[i][j] ][0]; + triangle_poly_y[j] = veh_vrtx_screen[ veh_triangles[i][j] ][1]; + + } + g2d.fillPolygon(triangle_poly_x, triangle_poly_y, 3); + } + } + + // Draw Wireframe Model + + g2d.setPaint( bodyLineColor ); + + for (int i = 0; i\n" + + "----------------------------------------------------------------------\n" + ); + } + + public static void main(String[] args) throws IOException { + + String host = "localHost"; + int port = 0; + String bodyImageFile = null; + + int ii = 0; + while (ii < args.length) { + switch (args[ii]) { + case "-help" : + case "--help" : { + printHelpText(); + System.exit(0); + } break; + default : { + port = (Integer.parseInt(args[ii])); + } break; + } + ++ii; + } + + if (port == 0) { + System.out.println("No variable server port specified."); + printHelpText(); + System.exit(0); + } + + SingleRigidBodyView singleRigidBodyView = new SingleRigidBodyView(); + + SRBDisplay sd = new SRBDisplay(singleRigidBodyView); + sd.setVisible(true); + + double f_init_x = 0.0; + double f_init_y = 0.0; + double f_init_z = 0.0; + + double accX = 0.0; + double accY = 0.0; + double accZ = 0.0; + + double angleX = 0.0; + double angleY = 0.0; + double angleZ = 0.0; + + double f_angleX = 0.0; + double f_angleY = 0.0; + double f_angleZ = 0.0; + + double forceX = 0.0; + double forceY = 0.0; + double forceZ = 0.0; + + double omegaX = 0.0; + double omegaY = 0.0; + double omegaZ = 0.0; + + double omegaDotX = 0.0; + double omegaDotY = 0.0; + double omegaDotZ = 0.0; + + double posX = 0.0; + double posY = 0.0; + double posZ = 0.0; + + double Rxx = 0.0; + double Rxy = 0.0; + double Rxz = 0.0; + double Ryx = 0.0; + double Ryy = 0.0; + double Ryz = 0.0; + double Rzx = 0.0; + double Rzy = 0.0; + double Rzz = 0.0; + + double velX = 0.0; + double velY = 0.0; + double velZ = 0.0; + + System.out.println("Connecting to: " + host + ":" + port); + sd.connectToServer(host, port); + + sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + + "trick.var_pause() \n" + + + "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP + "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + + "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + + + "trick.var_add(\"dyn.body.acc[0]\") \n" + + "trick.var_add(\"dyn.body.acc[1]\") \n" + + "trick.var_add(\"dyn.body.acc[2]\") \n" + + + "trick.var_add(\"dyn.body.angle[0]\") \n" + + "trick.var_add(\"dyn.body.angle[1]\") \n" + + "trick.var_add(\"dyn.body.angle[2]\") \n" + + + "trick.var_add(\"dyn.body.angle_force[0]\") \n" + + "trick.var_add(\"dyn.body.angle_force[1]\") \n" + + "trick.var_add(\"dyn.body.angle_force[2]\") \n" + + + "trick.var_add(\"dyn.body.force[0]\") \n" + + "trick.var_add(\"dyn.body.force[1]\") \n" + + "trick.var_add(\"dyn.body.force[2]\") \n" + + + "trick.var_add(\"dyn.body.omega[0]\") \n" + + "trick.var_add(\"dyn.body.omega[1]\") \n" + + "trick.var_add(\"dyn.body.omega[2]\") \n" + + + "trick.var_add(\"dyn.body.omegaDot[0]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[1]\") \n" + + "trick.var_add(\"dyn.body.omegaDot[2]\") \n" + + + "trick.var_add(\"dyn.body.pos[0]\") \n" + + "trick.var_add(\"dyn.body.pos[1]\") \n" + + "trick.var_add(\"dyn.body.pos[2]\") \n" + + + "trick.var_add(\"dyn.body.rotate[0][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[0][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[1][2]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][0]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][1]\") \n" + + "trick.var_add(\"dyn.body.rotate[2][2]\") \n" + + + "trick.var_add(\"dyn.body.vel[0]\") \n" + + "trick.var_add(\"dyn.body.vel[1]\") \n" + + "trick.var_add(\"dyn.body.vel[2]\") \n" + + + "trick.var_ascii() \n" + + "trick.var_cycle(0.1) \n" + + "trick.var_unpause()\n" ); + + sd.out.flush(); + + sd.drawSRBView(); + + Boolean go = true; + + while (go) { + String field[]; + try { + String line; + line = sd.in.readLine(); + field = line.split("\t"); + + f_init_x = Double.parseDouble( field[1] ); + f_init_y = Double.parseDouble( field[2] ); + f_init_z = Double.parseDouble( field[3] ); + + accX = Double.parseDouble( field[4] ); + accY = Double.parseDouble( field[5] ); + accZ = Double.parseDouble( field[6] ); + + angleX = Double.parseDouble( field[7] ); + angleY = Double.parseDouble( field[8] ); + angleZ = Double.parseDouble( field[9] ); + + f_angleX = Double.parseDouble( field[10] ); + f_angleY = Double.parseDouble( field[11] ); + f_angleZ = Double.parseDouble( field[12] ); + + forceX = Double.parseDouble( field[13] ); + forceY = Double.parseDouble( field[14] ); + forceZ = Double.parseDouble( field[15] ); + + omegaX = Double.parseDouble( field[16] ); + omegaY = Double.parseDouble( field[17] ); + omegaZ = Double.parseDouble( field[18] ); + + omegaDotX = Double.parseDouble( field[19] ); + omegaDotY = Double.parseDouble( field[20] ); + omegaDotZ = Double.parseDouble( field[21] ); + + posX = Double.parseDouble( field[21] ); + posY = Double.parseDouble( field[22] ); + posZ = Double.parseDouble( field[23] ); + + Rxx = Double.parseDouble( field[24] ); + Rxy = Double.parseDouble( field[25] ); + Rxz = Double.parseDouble( field[26] ); + Ryx = Double.parseDouble( field[27] ); + Ryy = Double.parseDouble( field[28] ); + Ryz = Double.parseDouble( field[29] ); + Rzx = Double.parseDouble( field[30] ); + Rzy = Double.parseDouble( field[31] ); + Rzz = Double.parseDouble( field[32] ); + + velX = Double.parseDouble( field[33] ); + velY = Double.parseDouble( field[34] ); + velZ = Double.parseDouble( field[35] ); + + // Set the body position + singleRigidBodyView.setBodyPos(posX, posY, posZ); + + singleRigidBodyView.setBodyToWorldRotation( Rxx, Rxy, Rxz, + Ryx, Ryy, Ryz, + Rzx, Rzy, Rzz ); + + } catch (IOException | NullPointerException e ) { + go = false; + } + sd.drawSRBView(); + } + } + +} \ No newline at end of file From 63cfea5ef9893536aeb625d6e9376989bdd91164 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 28 Aug 2024 11:36:41 -0500 Subject: [PATCH 21/40] S_overrides changed to include graphics cleaning for each sim execution. --- trick_sims/SIM_singlerigidbody/S_overrides.mk | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/trick_sims/SIM_singlerigidbody/S_overrides.mk b/trick_sims/SIM_singlerigidbody/S_overrides.mk index e1f6cccd6..abd95c9b1 100644 --- a/trick_sims/SIM_singlerigidbody/S_overrides.mk +++ b/trick_sims/SIM_singlerigidbody/S_overrides.mk @@ -1,2 +1,14 @@ TRICK_CFLAGS += -Imodels TRICK_CXXFLAGS += -Imodels + +.PHONY: clean_graphics + +all: models/singlerigidbodygraphics/build/SingleRigidBodyDisplay.jar + +spotless: clean_graphics + +models/singlerigidbodygraphics/build/SingleRigidBodyDisplay.jar: + ${MAKE} -C ./models/singlerigidbodygraphics + +clean_graphics: + ${MAKE} -C ./models/singlerigidbodygraphics clean From ed8bce2bc6d60aef489694034834000b204008b8 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 28 Aug 2024 11:37:03 -0500 Subject: [PATCH 22/40] S_define formatted for better readability. --- trick_sims/SIM_singlerigidbody/S_define | 2 ++ 1 file changed, 2 insertions(+) diff --git a/trick_sims/SIM_singlerigidbody/S_define b/trick_sims/SIM_singlerigidbody/S_define index 04f1f57a7..8fccf5f60 100644 --- a/trick_sims/SIM_singlerigidbody/S_define +++ b/trick_sims/SIM_singlerigidbody/S_define @@ -12,7 +12,9 @@ LIBRARY DEPENDENCIES: #define TRICK_NO_ZEROCONF #include "sim_objects/default_trick_sys.sm" + ##include "singlerigidbody/include/body.hh" + class BodySimObject : public Trick::SimObject { public: BODY body; From 4168e31f0f19a86213be62ff40a389a6d0ee291b Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Thu, 29 Aug 2024 13:40:57 -0500 Subject: [PATCH 23/40] Changed shape to a dodecahedron. --- .../java/trick/srbdisplay/SRBDisplay.java | 98 +++++++------------ 1 file changed, 37 insertions(+), 61 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 6a06d1d04..c97492db8 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -94,67 +94,39 @@ public SingleRigidBodyView() { {0.0, 0.0, 1.0}}; - // NEED TO CHANGE THIS SO IT REFLECTS A SPHERE + // The dodecahedron has 4 "layers" to it. I have labeled them as follows: top (T), upper-middle (UM), lower-middle (LM), and bottom (B) veh_vrtx_body = new double[][] - { { 0.000, 0.000, 2.400}, /* 0 top point*/ - { 0.900, 0.000, 2.400}, /* 1 Upper ring */ - { 0.779, 0.450, 2.400}, /* 2 */ - { 0.450, 0.779, 2.400}, /* 3 */ - { 0.000, 0.900, 2.400}, /* 4 */ - {-0.450, 0.779, 2.400}, /* 5 */ - {-0.779, 0.450, 2.400}, /* 6 */ - {-0.900, 0.000, 2.400}, /* 7 */ - {-0.779,-0.450, 2.400}, /* 8 */ - {-0.450,-0.779, 2.400}, /* 9 */ - { 0.000,-0.900, 2.400}, /* 10 */ - { 0.450,-0.779, 2.400}, /* 11 */ - { 0.779,-0.450, 2.400}, /* 12 */ - { 2.500, 0.000,-0.100}, /* 13 Middle ring */ - { 2.166, 1.250,-0.100}, /* 14 */ - { 1.250, 2.166,-0.100}, /* 15 */ - { 0.000, 2.500,-0.100}, /* 16 */ - {-1.250, 2.166,-0.100}, /* 17 */ - {-2.166, 1.250,-0.100}, /* 18 */ - {-2.500, 0.000,-0.100}, /* 19 */ - {-2.166,-1.250,-0.100}, /* 20 */ - {-1.250,-2.166,-0.100}, /* 21 */ - { 0.000,-2.500,-0.100}, /* 22 */ - { 1.250,-2.166,-0.100}, /* 23 */ - { 2.166,-1.250,-0.100}, /* 24 */ - { 2.500, 0.000,-0.300}, /* 25 Lower ring */ - { 2.166, 1.250,-0.300}, /* 26 */ - { 1.250, 2.166,-0.300}, /* 27 */ - { 0.000, 2.500,-0.300}, /* 28 */ - {-1.250, 2.166,-0.300}, /* 29 */ - {-2.166, 1.250,-0.300}, /* 30 */ - {-2.500, 0.000,-0.300}, /* 31 */ - {-2.166,-1.250,-0.300}, /* 32 */ - {-1.250,-2.166,-0.300}, /* 33 */ - { 0.000,-2.500,-0.300}, /* 34 */ - { 1.250,-2.166,-0.300}, /* 35 */ - { 2.166,-1.250,-0.300}, /* 36 */ - { 0.000, 0.000,-0.900} /* 37 bottom point */ - }; + { {-1.37638,0.000000,0.262866}, // 0 - UM + {1.37638,0.000000,-0.262866}, // 1 - LM + {-0.425325,-1.30902,0.262866}, // 2 - UM + {-0.425325,1.30902,0.262866}, // 3 - UM + {1.11352,-0.809017,0.262866}, // 4 - UM + {1.11352,0.809017,0.262866}, // 5 - UM + {-0.262866,-0.809017,1.11352}, // 6 - T + {-0.262866,0.809017,1.11352}, // 7 - T + {-0.688191,-0.5,-1.11352}, // 8 - B + {-0.688191,0.5,-1.11352}, // 9 - B + {0.688191,-0.5,1.11352}, // 10 - T + {0.688191,0.5,1.11352}, // 11 - T + {0.850651,0.000000,-1.11352}, // 12 - B + {-1.11352,-0.809017,-0.262866}, // 13 - LM + {-1.11352,0.809017,-0.262866}, // 14 - LM + {-0.850651,0.000000,1.11352}, // 15 - T + {0.262866,-0.809017,-1.11352}, // 16 - B + {0.262866,0.809017,-1.11352}, // 17 - B + {0.425325,-1.30902,-0.262866}, // 18 - LM + {0.425325,1.30902,-0.262866},}; // 19 - LM veh_vrtx_world = new double[veh_vrtx_body.length][3]; veh_vrtx_screen = new int[veh_vrtx_body.length][2]; - // NEED TO CHANGE THIS WITH SPHERE MODEL + // Defines the edges for the dodecahedron. veh_edges = new int[][] - { /* connect top-center and upper ring */ - { 0, 1},{ 0, 2},{ 0, 3},{ 0, 4},{ 0, 5},{ 0, 6},{ 0, 7},{ 0, 8},{ 0, 9},{ 0,10},{ 0,11},{ 0,12}, - /* connect upper ring points */ - { 1, 2},{ 2, 3},{ 3, 4},{ 4, 5},{ 5, 6},{ 6, 7},{ 7, 8},{ 8, 9},{ 9,10},{10,11},{11,12},{12, 1}, - /* connect upper and middle rings */ - { 1,13},{ 2,14},{ 3,15},{ 4,16},{ 5,17},{ 6,18},{ 7,19},{ 8,20},{ 9,21},{10,22},{11,23},{12,24}, - /* connect middle ring points */ - {13,14},{14,15},{15,16},{16,17},{17,18},{18,19},{19,20},{20,21},{21,22},{22,23},{23,24},{24,13}, - /* connect middle and lower rings */ - {13,25},{14,26},{15,27},{16,28},{17,29},{18,30},{19,31},{20,32},{21,33},{22,34},{23,35},{24,36}, - /* connect lower ring points */ - {25,26},{26,27},{27,28},{28,29},{29,30},{30,31},{31,32},{32,33},{33,34},{34,35},{35,36},{36,25}, - /* connect lower points to bottom-center */ - {25,37},{26,37},{27,37},{28,37},{29,37},{30,37},{31,37},{32,37},{33,37},{34,37},{35,37},{36,37} + { {0, 2}, {0, 3}, {0, 13}, {0, 14}, {1, 4}, {1, 5}, {1, 12}, {1, 19}, + {2, 6}, {2, 13}, {3, 7}, {3, 14}, {4, 10}, {4, 18}, {5, 11}, {5, 19}, + {6, 10}, {6, 13}, {7, 11}, {7, 14}, {8, 12}, {8, 13}, {9, 12}, {9, 14}, + {8, 16}, {8, 17}, {9, 16}, {9, 17}, {10, 15}, {11, 15}, {12, 17}, {12, 18}, + {13, 16}, {14, 17}, {15, 6}, {15, 7}, {16, 18}, {17, 19}, {18, 4}, {19, 5} }; // The order of the vertices in each of the triangles is significant. The points should follow @@ -164,12 +136,16 @@ public SingleRigidBodyView() { // NEED TO CHANGE THIS WITH SPHERE MODEL veh_triangles = new int[][] { - { 0, 1, 2},{ 0, 2, 3},{ 0, 3, 4},{ 0, 4, 5},{ 0, 5, 6},{ 0, 6, 7},{ 0, 7, 8},{ 0, 8, 9},{ 0, 9,10},{ 0,10,11},{ 0,11,12},{ 0,12, 1}, - { 2, 1,13},{ 3, 2,14},{ 4, 3,15},{ 5, 4,16},{ 6, 5,17},{ 7, 6,18},{ 8, 7,19},{ 9, 8,20},{10, 9,21},{11,10,22},{12,11,23},{ 1,12,24}, - { 2,13,14},{ 3,14,15},{ 4,15,16},{ 5,16,17},{ 6,17,18},{ 7,18,19},{ 8,19,20},{ 9,20,21},{10,21,22},{11,22,23},{12,23,24},{1,24,13}, - {14,13,25},{15,14,26},{16,15,27},{17,16,28},{18,17,29},{19,18,30},{20,19,31},{21,20,32},{22,21,33},{23,22,34},{24,23,35},{13,24,36}, - {14,25,26},{15,26,27},{16,27,28},{17,28,29},{18,29,30},{19,30,31},{20,31,32},{21,32,33},{22,33,34},{23,34,35},{24,35,36},{13,36,25}, - {25,37,26},{26,37,27},{27,37,28},{28,37,29},{29,37,30},{30,37,31},{31,37,32},{32,37,33},{33,37,34},{34,37,35},{35,37,36},{36,37,25} + {0, 2, 6}, {0, 6, 10}, {0, 10, 15}, // First pentagon using vertices 0, 2, 6, 10, 15 + {0, 15, 7}, {0, 7, 3}, {0, 3, 14}, // Second pentagon using vertices 0, 15, 7, 3, 14 + {0, 14, 9}, {0, 9, 13}, {0, 13, 2}, // Third pentagon using vertices 0, 14, 9, 13, 2 + {1, 5, 19}, {1, 19, 17}, {1, 17, 12}, // Fourth pentagon using vertices 1, 5, 19, 17, 12 + {1, 12, 8}, {1, 8, 4}, {1, 4, 10}, // Fifth pentagon using vertices 1, 12, 8, 4, 10 + {1, 18, 10}, {1, 10, 6}, {1, 6, 2}, // Sixth pentagon using vertices 1, 18, 20, 6, 2 + {8, 12, 17}, {8, 17, 16}, {8, 16, 13}, // Seventh pentagon using vertices 8, 12, 17, 16, 13 + {9, 17, 19}, {9, 19, 14}, {9, 14, 13}, // Eighth pentagon using vertices 9, 17, 19, 14, 13 + {4, 10, 15}, {4, 15, 7}, {4, 7, 3}, // Ninth pentagon using vertices 4, 10, 15, 7, 3 + {18, 4, 3}, {18, 3, 14}, {18, 14, 19} // Tenth pentagon using vertices 18, 4, 3, 14, 19 }; // Create the normals for the triangles From a9be32f7c1b7f1ae3f98da89d486d79d2f34a922 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Thu, 29 Aug 2024 15:09:51 -0500 Subject: [PATCH 24/40] Path changed for input file. --- trick_sims/SIM_singlerigidbody/RUN_test/input.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/RUN_test/input.py b/trick_sims/SIM_singlerigidbody/RUN_test/input.py index 2eddfae40..5d51a54e4 100644 --- a/trick_sims/SIM_singlerigidbody/RUN_test/input.py +++ b/trick_sims/SIM_singlerigidbody/RUN_test/input.py @@ -76,7 +76,7 @@ dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 12) # ============================================================================ - -# This tells the sim to stop after a few seconds +# This tells the sim to stop after a few second # ============================================================================ - trick.stop(10.0) @@ -86,7 +86,7 @@ # Start the Graphics Client #========================================== varServerPort = trick.var_server_get_port(); -SRBDisplay_path = "models/singlerigidbodygraphics/build/SRBDisplay.jar" +SRBDisplay_path = "models/singlerigidbodygraphics/build/SingleRigidBodyDisplay.jar" if (os.path.isfile(SRBDisplay_path)) : SRBDisplay_cmd = "java -jar " \ From f3a27a55e29805bf346cdb72d8212f10a2612cc3 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Thu, 29 Aug 2024 15:32:53 -0500 Subject: [PATCH 25/40] Airport commit --- .../{ => singlerigidbody}/include/body.hh | 0 .../models/{ => singlerigidbody}/src/body.cpp | 0 .../{src => }/Makefile | 0 .../src/SRBDisplay.java | 634 ------------------ .../java/trick}/matrixops/MatrixOps.java | 0 .../java/trick/srbdisplay/SRBDisplay.java | 21 +- .../src/srb_display.java | 113 ---- .../SIM_splashdown/Modified_data/realtime.py | 2 + trick_sims/singlebody_notes | 16 + 9 files changed, 28 insertions(+), 758 deletions(-) rename trick_sims/SIM_singlerigidbody/models/{ => singlerigidbody}/include/body.hh (100%) rename trick_sims/SIM_singlerigidbody/models/{ => singlerigidbody}/src/body.cpp (100%) rename trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/{src => }/Makefile (100%) delete mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java rename trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/{ => main/java/trick}/matrixops/MatrixOps.java (100%) delete mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java create mode 100644 trick_sims/singlebody_notes diff --git a/trick_sims/SIM_singlerigidbody/models/include/body.hh b/trick_sims/SIM_singlerigidbody/models/singlerigidbody/include/body.hh similarity index 100% rename from trick_sims/SIM_singlerigidbody/models/include/body.hh rename to trick_sims/SIM_singlerigidbody/models/singlerigidbody/include/body.hh diff --git a/trick_sims/SIM_singlerigidbody/models/src/body.cpp b/trick_sims/SIM_singlerigidbody/models/singlerigidbody/src/body.cpp similarity index 100% rename from trick_sims/SIM_singlerigidbody/models/src/body.cpp rename to trick_sims/SIM_singlerigidbody/models/singlerigidbody/src/body.cpp diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/Makefile b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/Makefile similarity index 100% rename from trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/Makefile rename to trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/Makefile diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java deleted file mode 100644 index c88b9b061..000000000 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/SRBDisplay.java +++ /dev/null @@ -1,634 +0,0 @@ -// This file contains the architecture for the single rigid body simulation's 3D graphics client. - -package trick; - -// AWT is the abstract window toolkit. -import java.awt.Graphics2D; -import java.awt.Graphics; -import java.awt.Color; -import java.awt.event.MouseEvent; - -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.FileReader; - -import java.net.Socket; - -import java.util.*; - -// Swing is a GUI widget toolkit. -import javax.swing.JFrame; // Allows you to manage a top-level window. -import javax.swing.JPanel; // The stuff within the window (controls, buttons, etc.). -import javax.swing.JViewport.ViewListener; -import javax.swing.event.MouseInputAdapter; - -import trick.matrixOps.MatrixOps; - -/** - * @author Aditya Girish - */ - -class SRBView extends JPanel { // Main body class of how we view the SRB. - - private int screen_half_width; - private int screen_half_height; - - private double illumination_vector[]; // World coordinates - - private double vantageAzimuth; // Secifies the direction of the celestial light source. - private double vantageElevation; - - private double vantageDistance; - private double beta; - - private double worldToVantageRotation[][]; - - private Color bodyLineColor; - private Color bodyFillColor; - - private double[] bodyPos; - - private double bodyToWorldRotation[][]; - - private double veh_vrtx_body[][]; - private double veh_vrtx_world[][]; - private int veh_vrtx_screen[][]; - - private int veh_edges[][]; - private int veh_triangles[][]; - - private double veh_unit_normals_body[][]; - private double veh_unit_normals_world[][]; - private double veh_unit_normals_vantage[][]; - - public SRBView() { - - ViewListener viewListener = new ViewListener(); - addMouseListener(viewListener); - addMouseMotionListener(viewListener); - - // Direction of light. - illumination_vector = new double[] {-0.707, 0.0, -0.707}; - - // Location of the observer, looking toward the world's origin. - vantageAzimuth = Math.toRadians(45.0); - vantageElevation = Math.toRadians(20.0); - vantageDistance = 12.0; - - // Half field of view angle - beta = Math.toRadians(40.0); - - worldToVantageRotation = new double[3][3]; - setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); - - bodyLineColor = Color.GRAY; - bodyFillColor = new Color(255, 255, 250); - - bodyPos = new double[] {0.0, 0.0, 0.0}; - - bodyToWorldRotation = new double[][] {{1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {0.0, 0.0, 1.0}}; - - - // NEED TO CHANGE THIS SO IT REFLECTS A SPHERE - veh_vrtx_body = new double[][] - { { 0.000, 0.000, 2.400}, /* 0 top point*/ - { 0.900, 0.000, 2.400}, /* 1 Upper ring */ - { 0.779, 0.450, 2.400}, /* 2 */ - { 0.450, 0.779, 2.400}, /* 3 */ - { 0.000, 0.900, 2.400}, /* 4 */ - {-0.450, 0.779, 2.400}, /* 5 */ - {-0.779, 0.450, 2.400}, /* 6 */ - {-0.900, 0.000, 2.400}, /* 7 */ - {-0.779,-0.450, 2.400}, /* 8 */ - {-0.450,-0.779, 2.400}, /* 9 */ - { 0.000,-0.900, 2.400}, /* 10 */ - { 0.450,-0.779, 2.400}, /* 11 */ - { 0.779,-0.450, 2.400}, /* 12 */ - { 2.500, 0.000,-0.100}, /* 13 Middle ring */ - { 2.166, 1.250,-0.100}, /* 14 */ - { 1.250, 2.166,-0.100}, /* 15 */ - { 0.000, 2.500,-0.100}, /* 16 */ - {-1.250, 2.166,-0.100}, /* 17 */ - {-2.166, 1.250,-0.100}, /* 18 */ - {-2.500, 0.000,-0.100}, /* 19 */ - {-2.166,-1.250,-0.100}, /* 20 */ - {-1.250,-2.166,-0.100}, /* 21 */ - { 0.000,-2.500,-0.100}, /* 22 */ - { 1.250,-2.166,-0.100}, /* 23 */ - { 2.166,-1.250,-0.100}, /* 24 */ - { 2.500, 0.000,-0.300}, /* 25 Lower ring */ - { 2.166, 1.250,-0.300}, /* 26 */ - { 1.250, 2.166,-0.300}, /* 27 */ - { 0.000, 2.500,-0.300}, /* 28 */ - {-1.250, 2.166,-0.300}, /* 29 */ - {-2.166, 1.250,-0.300}, /* 30 */ - {-2.500, 0.000,-0.300}, /* 31 */ - {-2.166,-1.250,-0.300}, /* 32 */ - {-1.250,-2.166,-0.300}, /* 33 */ - { 0.000,-2.500,-0.300}, /* 34 */ - { 1.250,-2.166,-0.300}, /* 35 */ - { 2.166,-1.250,-0.300}, /* 36 */ - { 0.000, 0.000,-0.900} /* 37 bottom point */ - }; - - veh_vrtx_world = new double[veh_vrtx_body.length][3]; - veh_vrtx_screen = new int[veh_vrtx_body.length][2]; - - // NEED TO CHANGE THIS WITH SPHERE MODEL - veh_edges = new int[][] - { /* connect top-center and upper ring */ - { 0, 1},{ 0, 2},{ 0, 3},{ 0, 4},{ 0, 5},{ 0, 6},{ 0, 7},{ 0, 8},{ 0, 9},{ 0,10},{ 0,11},{ 0,12}, - /* connect upper ring points */ - { 1, 2},{ 2, 3},{ 3, 4},{ 4, 5},{ 5, 6},{ 6, 7},{ 7, 8},{ 8, 9},{ 9,10},{10,11},{11,12},{12, 1}, - /* connect upper and middle rings */ - { 1,13},{ 2,14},{ 3,15},{ 4,16},{ 5,17},{ 6,18},{ 7,19},{ 8,20},{ 9,21},{10,22},{11,23},{12,24}, - /* connect middle ring points */ - {13,14},{14,15},{15,16},{16,17},{17,18},{18,19},{19,20},{20,21},{21,22},{22,23},{23,24},{24,13}, - /* connect middle and lower rings */ - {13,25},{14,26},{15,27},{16,28},{17,29},{18,30},{19,31},{20,32},{21,33},{22,34},{23,35},{24,36}, - /* connect lower ring points */ - {25,26},{26,27},{27,28},{28,29},{29,30},{30,31},{31,32},{32,33},{33,34},{34,35},{35,36},{36,25}, - /* connect lower points to bottom-center */ - {25,37},{26,37},{27,37},{28,37},{29,37},{30,37},{31,37},{32,37},{33,37},{34,37},{35,37},{36,37} - }; - - // The order of the vertices in each of the triangles is significant. The points should follow - // a path counter clock wise about the triangle's normal vector. The position normal side of - // the triangle is the visable side. - - // NEED TO CHANGE THIS WITH SPHERE MODEL - veh_triangles = new int[][] - { - { 0, 1, 2},{ 0, 2, 3},{ 0, 3, 4},{ 0, 4, 5},{ 0, 5, 6},{ 0, 6, 7},{ 0, 7, 8},{ 0, 8, 9},{ 0, 9,10},{ 0,10,11},{ 0,11,12},{ 0,12, 1}, - { 2, 1,13},{ 3, 2,14},{ 4, 3,15},{ 5, 4,16},{ 6, 5,17},{ 7, 6,18},{ 8, 7,19},{ 9, 8,20},{10, 9,21},{11,10,22},{12,11,23},{ 1,12,24}, - { 2,13,14},{ 3,14,15},{ 4,15,16},{ 5,16,17},{ 6,17,18},{ 7,18,19},{ 8,19,20},{ 9,20,21},{10,21,22},{11,22,23},{12,23,24},{1,24,13}, - {14,13,25},{15,14,26},{16,15,27},{17,16,28},{18,17,29},{19,18,30},{20,19,31},{21,20,32},{22,21,33},{23,22,34},{24,23,35},{13,24,36}, - {14,25,26},{15,26,27},{16,27,28},{17,28,29},{18,29,30},{19,30,31},{20,31,32},{21,32,33},{22,33,34},{23,34,35},{24,35,36},{13,36,25}, - {25,37,26},{26,37,27},{27,37,28},{28,37,29},{29,37,30},{30,37,31},{31,37,32},{32,37,33},{33,37,34},{34,37,35},{35,37,36},{36,37,25} - }; - - // Create the normals for the triangles - veh_unit_normals_body = new double[veh_triangles.length][3]; - double v1[] = {0.0, 0.0, 0.0}; - double v2[] = {0.0, 0.0, 0.0}; - for (int i=0; i < veh_unit_normals_body.length; i++ ) { - MatrixOps.VminusV (v1, veh_vrtx_body[ veh_triangles[i][1] ], veh_vrtx_body[ veh_triangles[i][0] ]); - MatrixOps.VminusV (v2, veh_vrtx_body[ veh_triangles[i][2] ], veh_vrtx_body[ veh_triangles[i][0] ]); - MatrixOps.VcrossV (veh_unit_normals_body[i], v1, v2); - double vmag = MatrixOps.Vmagnitude(veh_unit_normals_body[i]); - MatrixOps.Vscale (veh_unit_normals_body[i], veh_unit_normals_body[i], 1.0/vmag); - } - - veh_unit_normals_world = new double[ veh_unit_normals_body.length ][3]; - veh_unit_normals_vantage = new double[ veh_unit_normals_body.length ][3]; - - } - - private class ViewListener extends MouseInputAdapter { - private int start_x; - private int start_y; - public void mousePressed(MouseEvent e) { - start_x = e.getX(); - start_y = e.getY(); - } - public void mouseDragged(MouseEvent e) { - int dx = ( e.getX() - start_x ); - int dy = ( start_y - e.getY()); - start_x = e.getX(); - start_y = e.getY(); - mouseVantage( dx, dy); - } - } - - public void setVantageRange(double range) { - vantageDistance = range; - } - - public void setBodyToWorldRotation( double xx, double xy, double xz, - double yx, double yy, double yz, - double zx, double zy, double zz ) { - bodyToWorldRotation[0][0] = xx; - bodyToWorldRotation[0][1] = xy; - bodyToWorldRotation[0][2] = xz; - bodyToWorldRotation[1][0] = yx; - bodyToWorldRotation[1][1] = yy; - bodyToWorldRotation[1][2] = yz; - bodyToWorldRotation[2][0] = zx; - bodyToWorldRotation[2][1] = zy; - bodyToWorldRotation[2][2] = zz; - } - - public void mouseVantage(int dx, int dy) { - vantageAzimuth += (dx * Math.PI) / getWidth(); - if (vantageAzimuth > Math.PI) vantageAzimuth -= Math.PI; - if (vantageAzimuth < -Math.PI) vantageAzimuth += Math.PI; - vantageElevation -= (dy * Math.PI) / getHeight(); - if (vantageElevation > Math.toRadians( 89.0)) vantageElevation = Math.toRadians( 89.0); - if (vantageElevation < Math.toRadians(-89.0)) vantageElevation = Math.toRadians(-89.0); - setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); - repaint(); - } - - public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. - double Rotation_about_Y[][] = { - { Math.cos(elevation), 0.0, Math.sin(elevation)}, - { 0.0, 1.0, 0.0}, - {-Math.sin(elevation), 0.0, Math.cos(elevation)} - }; - - double Rotation_about_Z[][] = { - {Math.cos(azimuth), -Math.sin(azimuth), 0.0}, - {Math.sin(azimuth), Math.cos(azimuth), 0.0}, - { 0.0, 0.0, 1.0} - }; - MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); - } - - public void worldToScreenPoint( int result[], double V_world[]) { - double V_vantage[] = new double[3]; - // Tranform vector in world coordinates to vantage coordinates. - MatrixOps.MtimesV(V_vantage, worldToVantageRotation, V_world); - // Perspective projection of point in 3D vantage coordinates to 2D screen coordinates. - double perspective_scale = screen_half_width/(Math.tan(beta)*(vantageDistance-V_vantage[0])); - result[0] = (int)(perspective_scale * V_vantage[1] + screen_half_width); - result[1] = (int)(screen_half_height - perspective_scale * V_vantage[2]); - } - - public void setBodyPos( double x, double y, double z) { - bodyPos[0] = x; - bodyPos[1] = y; - bodyPos[2] = z; - } - - public void drawLineSegmentInWorld(Graphics2D g, Color color, double start[], double end[]) { - g.setPaint(color); - int start_screen[] = {0, 0}; - int end_screen[] = {0, 0}; - worldToScreenPoint( start_screen, start); - worldToScreenPoint( end_screen, end); - g.drawLine( start_screen[0], start_screen[1], end_screen[0], end_screen[1]); - } - - public void drawLabelInWorld(Graphics2D g, Color color, double loc_world[], String s) { - g.setPaint(color); - int loc_screen[] = {0, 0}; - worldToScreenPoint( loc_screen, loc_world); - g.drawString ( s, loc_screen[0], loc_screen[1]); - } - - private void doDrawing( Graphics g) { - Graphics2D g2d = (Graphics2D) g; - - int width = getWidth(); - int height = getHeight(); - - screen_half_width = (width/2); - screen_half_height = (height/2); - - g2d.setPaint(Color.WHITE); - g2d.fillRect(0, 0, width, height); - - - // Draw the vehicle. - - // Transform the vehicle vertices from body -> world, apply the vehicle position offset, and then to 2D screen points. - for (int i=0; i World -> Vantage - MatrixOps.MtimesV(veh_unit_normals_world[i], bodyToWorldRotation, veh_unit_normals_body[i]); - MatrixOps.MtimesV(veh_unit_normals_vantage[i], worldToVantageRotation, veh_unit_normals_world[i]); - - // Render the triangle only if it's facing us. - double facing_angle = MatrixOps.VdotV(veh_unit_normals_vantage[i], LOS_vantage); - if ( (facing_angle > 0.0) && (facing_angle < Math.toRadians(90))) { - - // Calculate the diffuse reflection intensity. - double neg_illumination_vector[] = {0.0, 0.0, 0.0}; - MatrixOps.Vscale(neg_illumination_vector, illumination_vector, -1.0); - double diffuse_intensity = MatrixOps.VdotV(neg_illumination_vector, veh_unit_normals_world[i]); - if (diffuse_intensity < 0.0) diffuse_intensity = 0.0; - - // Proportion of the total light due to ambient light. - // (1.0 - ambient) is the proportion of reflected light. - double ambient = 0.8; // Must be between 0.0 and 1.0. - - // The color intensity is a combination of ambient light intensity, - // and diffuse reflection intensity. - double color_intensity = (ambient + (1.0 - ambient) * diffuse_intensity); - g2d.setPaint( new Color( (int)(vehicleFillColor.getRed() * color_intensity), - (int)(vehicleFillColor.getGreen() * color_intensity), - (int)(vehicleFillColor.getBlue() * color_intensity))); - // Draw the triangle. - int triangle_poly_x[] = {0, 0, 0}; - int triangle_poly_y[] = {0, 0, 0}; - // For each point of the triangle. - for (int j=0; j < 3; j++) { - - triangle_poly_x[j] = veh_vrtx_screen[ veh_triangles[i][j] ][0]; - triangle_poly_y[j] = veh_vrtx_screen[ veh_triangles[i][j] ][1]; - - } - g2d.fillPolygon(triangle_poly_x, triangle_poly_y, 3); - } - } - - // Draw Wireframe Model - - g2d.setPaint( vehicleLineColor ); - - for (int i = 0; i\n" - + "----------------------------------------------------------------------\n" - ); - } - - public static void main(String[] args) throws IOException { - - String host = "localHost"; - int port = 0; - String bodyImageFile = null; - - int ii = 0; - while (ii < args.length) { - switch (args[ii]) { - case "-help" : - case "--help" : { - printHelpText(); - System.exit(0); - } break; - default : { - port = (Integer.parseInt(args[ii])); - } break; - } - ++ii; - } - - if (port == 0) { - System.out.println("No variable server port specified."); - printHelpText(); - System.exit(0); - } - - SingleRigidBodyView singleRigidBodyView = new SingleRigidBodyView(); - - SRBDisplay sd = new SRBDisplay(singleRigidBodyView); - sd.setVisible(true); - - double f_init_x = 0.0; - double f_init_y = 0.0; - double f_init_z = 0.0; - - double accX = 0.0; - double accY = 0.0; - double accZ = 0.0; - - double angleX = 0.0; - double angleY = 0.0; - double angleZ = 0.0; - - double f_angleX = 0.0; - double f_angleY = 0.0; - double f_angleZ = 0.0; - - double forceX = 0.0; - double forceY = 0.0; - double forceZ = 0.0; - - double omegaX = 0.0; - double omegaY = 0.0; - double omegaZ = 0.0; - - double omegaDotX = 0.0; - double omegaDotY = 0.0; - double omegaDotZ = 0.0; - - double posX = 0.0; - double posY = 0.0; - double posZ = 0.0; - - double Rxx = 0.0; - double Rxy = 0.0; - double Rxz = 0.0; - double Ryx = 0.0; - double Ryy = 0.0; - double Ryz = 0.0; - double Rzx = 0.0; - double Rzy = 0.0; - double Rzz = 0.0; - - double velX = 0.0; - double velY = 0.0; - double velZ = 0.0; - - System.out.println("Connecting to: " + host + ":" + port); - sd.connectToServer(host, port); - - sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + - "trick.var_pause() \n" + - - "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP - "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + - "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + - - "trick.var_add(\"dyn.body.acc[0]\") \n" + - "trick.var_add(\"dyn.body.acc[1]\") \n" + - "trick.var_add(\"dyn.body.acc[2]\") \n" + - - "trick.var_add(\"dyn.body.angle[0]\") \n" + - "trick.var_add(\"dyn.body.angle[1]\") \n" + - "trick.var_add(\"dyn.body.angle[2]\") \n" + - - "trick.var_add(\"dyn.body.angle_force[0]\") \n" + - "trick.var_add(\"dyn.body.angle_force[1]\") \n" + - "trick.var_add(\"dyn.body.angle_force[2]\") \n" + - - "trick.var_add(\"dyn.body.force[0]\") \n" + - "trick.var_add(\"dyn.body.force[1]\") \n" + - "trick.var_add(\"dyn.body.force[2]\") \n" + - - "trick.var_add(\"dyn.body.omega[0]\") \n" + - "trick.var_add(\"dyn.body.omega[1]\") \n" + - "trick.var_add(\"dyn.body.omega[2]\") \n" + - - "trick.var_add(\"dyn.body.omegaDot[0]\") \n" + - "trick.var_add(\"dyn.body.omegaDot[1]\") \n" + - "trick.var_add(\"dyn.body.omegaDot[2]\") \n" + - - "trick.var_add(\"dyn.body.pos[0]\") \n" + - "trick.var_add(\"dyn.body.pos[1]\") \n" + - "trick.var_add(\"dyn.body.pos[2]\") \n" + - - "trick.var_add(\"dyn.body.rotate[0][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[0][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[0][2]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[1][2]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][0]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][1]\") \n" + - "trick.var_add(\"dyn.body.rotate[2][2]\") \n" + - - "trick.var_add(\"dyn.body.vel[0]\") \n" + - "trick.var_add(\"dyn.body.vel[1]\") \n" + - "trick.var_add(\"dyn.body.vel[2]\") \n" + - - "trick.var_ascii() \n" + - "trick.var_cycle(0.1) \n" + - "trick.var_unpause()\n" ); - - sd.out.flush(); - - sd.drawSRBView(); - - Boolean go = true; - - while (go) { - String field[]; - try { - String line; - line = sd.in.readLine(); - field = line.split("\t"); - - f_init_x = Double.parseDouble( field[1] ); - f_init_y = Double.parseDouble( field[2] ); - f_init_z = Double.parseDouble( field[3] ); - - accX = Double.parseDouble( field[4] ); - accY = Double.parseDouble( field[5] ); - accZ = Double.parseDouble( field[6] ); - - angleX = Double.parseDouble( field[7] ); - angleY = Double.parseDouble( field[8] ); - angleZ = Double.parseDouble( field[9] ); - - f_angleX = Double.parseDouble( field[10] ); - f_angleY = Double.parseDouble( field[11] ); - f_angleZ = Double.parseDouble( field[12] ); - - forceX = Double.parseDouble( field[13] ); - forceY = Double.parseDouble( field[14] ); - forceZ = Double.parseDouble( field[15] ); - - omegaX = Double.parseDouble( field[16] ); - omegaY = Double.parseDouble( field[17] ); - omegaZ = Double.parseDouble( field[18] ); - - omegaDotX = Double.parseDouble( field[19] ); - omegaDotY = Double.parseDouble( field[20] ); - omegaDotZ = Double.parseDouble( field[21] ); - - posX = Double.parseDouble( field[21] ); - posY = Double.parseDouble( field[22] ); - posZ = Double.parseDouble( field[23] ); - - Rxx = Double.parseDouble( field[24] ); - Rxy = Double.parseDouble( field[25] ); - Rxz = Double.parseDouble( field[26] ); - Ryx = Double.parseDouble( field[27] ); - Ryy = Double.parseDouble( field[28] ); - Ryz = Double.parseDouble( field[29] ); - Rzx = Double.parseDouble( field[30] ); - Rzy = Double.parseDouble( field[31] ); - Rzz = Double.parseDouble( field[32] ); - - velX = Double.parseDouble( field[33] ); - velY = Double.parseDouble( field[34] ); - velZ = Double.parseDouble( field[35] ); - - // Set the body position - singleRigidBodyView.setBodyPos(posX, posY, posZ); - - singleRigidBodyView.setBodyToWorldRotation( Rxx, Rxy, Rxz, - Ryx, Ryy, Ryz, - Rzx, Rzy, Rzz ); - - } catch (IOException | NullPointerException e ) { - go = false; - } - sd.drawSRBView(); - } - } - -} \ No newline at end of file diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/matrixops/MatrixOps.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/matrixops/MatrixOps.java similarity index 100% rename from trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/matrixops/MatrixOps.java rename to trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/matrixops/MatrixOps.java diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index c97492db8..0a2954d9e 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -133,19 +133,18 @@ public SingleRigidBodyView() { // a path counter clock wise about the triangle's normal vector. The position normal side of // the triangle is the visable side. - // NEED TO CHANGE THIS WITH SPHERE MODEL veh_triangles = new int[][] { - {0, 2, 6}, {0, 6, 10}, {0, 10, 15}, // First pentagon using vertices 0, 2, 6, 10, 15 - {0, 15, 7}, {0, 7, 3}, {0, 3, 14}, // Second pentagon using vertices 0, 15, 7, 3, 14 - {0, 14, 9}, {0, 9, 13}, {0, 13, 2}, // Third pentagon using vertices 0, 14, 9, 13, 2 - {1, 5, 19}, {1, 19, 17}, {1, 17, 12}, // Fourth pentagon using vertices 1, 5, 19, 17, 12 - {1, 12, 8}, {1, 8, 4}, {1, 4, 10}, // Fifth pentagon using vertices 1, 12, 8, 4, 10 - {1, 18, 10}, {1, 10, 6}, {1, 6, 2}, // Sixth pentagon using vertices 1, 18, 20, 6, 2 - {8, 12, 17}, {8, 17, 16}, {8, 16, 13}, // Seventh pentagon using vertices 8, 12, 17, 16, 13 - {9, 17, 19}, {9, 19, 14}, {9, 14, 13}, // Eighth pentagon using vertices 9, 17, 19, 14, 13 - {4, 10, 15}, {4, 15, 7}, {4, 7, 3}, // Ninth pentagon using vertices 4, 10, 15, 7, 3 - {18, 4, 3}, {18, 3, 14}, {18, 14, 19} // Tenth pentagon using vertices 18, 4, 3, 14, 19 + {0, 6, 2}, {0, 10, 6}, {0, 15, 10}, // First pentagon using vertices 0, 2, 6, 10, 15 + {0, 7, 15}, {0, 3, 7}, {0, 14, 3}, // Second pentagon using vertices 0, 15, 7, 3, 14 + {0, 9, 14}, {0, 13, 9}, {0, 2, 13}, // Third pentagon using vertices 0, 14, 9, 13, 2 + {1, 19, 5}, {1, 17, 19}, {1, 12, 17}, // Fourth pentagon using vertices 1, 5, 19, 17, 12 + {1, 8, 12}, {1, 4, 8}, {1, 10, 4}, // Fifth pentagon using vertices 1, 12, 8, 4, 10 + {1, 10, 18}, {1, 6, 10}, {1, 2, 6}, // Sixth pentagon using vertices 1, 18, 20, 6, 2 + {8, 17, 12}, {8, 16, 17}, {8, 13, 16}, // Seventh pentagon using vertices 8, 12, 17, 16, 13 + {9, 19, 17}, {9, 14, 19}, {9, 13, 14}, // Eighth pentagon using vertices 9, 17, 19, 14, 13 + {4, 15, 10}, {4, 7, 15}, {4, 3, 7}, // Ninth pentagon using vertices 4, 10, 15, 7, 3 + {18, 3, 4}, {18, 14, 3}, {18, 19, 14} // Tenth pentagon using vertices 18, 4, 3, 14, 19 }; // Create the normals for the triangles diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java deleted file mode 100644 index ec95add97..000000000 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/srb_display.java +++ /dev/null @@ -1,113 +0,0 @@ -// This file contains the architecture for the single rigid body simulation's 3D graphics client. - -package trick; - -// AWT is the abstract window toolkit. -import java.awt.Graphics2D; -import java.awt.Graphics; -import java.awt.Color; -import java.awt.event.MouseEvent; - -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.FileReader; - -import java.net.Socket; - -import java.util.*; - -// Swing is a GUI widget toolkit. -import javax.swing.JFrame; // Allows you to manage a top-level window. -import javax.swing.JPanel; // The stuff within the window (controls, buttons, etc.). -import javax.swing.event.MouseInputAdapter; - -import trick.matrixOps.MatrixOps; - -/** - * @author Aditya Girish - */ - - class SRBView extends JPanel { // Main body class of how we view the SRB. - - private int screen_half_width; - private int screen_half_height; - - private double illumination_vector[]; // World coordinates - - private double vantageAzimuth; // Secifies the direction of the celestial light source. - private double vantageElevation; - - private double vantageDistance; - private double beta; - - private double worldToVantageRotation[][]; - - private Color bodyLineColor; - private Color bodyFillColor; - - private double[] bodyPos; - - private double bodyToWorldRotation[][]; - - private double veh_vrtx_body[][]; - private double veh_vrtx_world[][]; - private int veh_vrtx_screen[][]; - - private int veh_edges[][]; - private int veh_triangles[][]; - - private double veh_unit_normals_body[][]; - private double veh_unit_normals_world[][]; - private double veh_unit_normals_vantage[][]; - - public SRBView() { - - ViewListener viewListener = new ViewListener(); - addMouseListener(viewListener); - addMouseMotionListener(viewListener); - - // Direction of light. - illumination_vector = new double[] {-0.707, 0.0, -0.707}; - - // Location of the observer, looking toward the world's origin. - vantageAzimuth = Math.toRadians(45.0); - vantageElevation = Math.toRadians(20.0); - vantageDistance = 12.0; - - // Half field of view angle - beta = Math.toRadians(40.0); - - worldToVantageRotation = new double[3][3]; - setAzElRotation(worldToVantageRotation, vantageAzimuth, vantageElevation); - - bodyLineColor = Color.GRAY; - bodyFillColor = new Color(255, 255, 250); - - bodyPos = new double[] {0.0, 0.0, 0.0}; - - bodyToWorldRotation = new double[][] {{1.0, 0.0, 0.0}, - {0.0, 1.0, 0.0}, - {0.0, 0.0, 1.0}}; - - - } - - public void setAzElRotation(double RotationMatrix[][], double azimuth, double elevation) { // Sets the azimuth and elevation rotation. - double Rotation_about_Y[][] = { - { Math.cos(elevation), 0.0, Math.sin(elevation)}, - { 0.0, 1.0, 0.0}, - {-Math.sin(elevation), 0.0, Math.cos(elevation)} - }; - - double Rotation_about_Z[][] = { - {Math.cos(azimuth), -Math.sin(azimuth), 0.0}, - {Math.sin(azimuth), Math.cos(azimuth), 0.0}, - { 0.0, 0.0, 1.0} - }; - MatrixOps.MtimesM( RotationMatrix, Rotation_about_Y, Rotation_about_Z); - } - - } \ No newline at end of file diff --git a/trick_sims/SIM_splashdown/Modified_data/realtime.py b/trick_sims/SIM_splashdown/Modified_data/realtime.py index acf31873a..778ce9c3a 100755 --- a/trick_sims/SIM_splashdown/Modified_data/realtime.py +++ b/trick_sims/SIM_splashdown/Modified_data/realtime.py @@ -8,3 +8,5 @@ simControlPanel = trick.SimControlPanel() trick.add_external_application(simControlPanel) + +trick.frame_log_on() diff --git a/trick_sims/singlebody_notes b/trick_sims/singlebody_notes new file mode 100644 index 000000000..00b99dcb9 --- /dev/null +++ b/trick_sims/singlebody_notes @@ -0,0 +1,16 @@ +Questions for Sean regarding the graphics client: +1) Could you provide the SIM to me? +2) Should I use my personal Github account or a NASA one? +3) What is the timeframe of this project? +4) Goals and expectations for this project? +5) Order in which I should develop the client? What files first, etc. +6) Best practice with commits and pulls, etc. + + +Get information from John: +1) Figure out what variables in John's sim his graphics client is grabbing, and map it onto Brittany's sim. +2) Figure out how the data is parsed in John's sim and apply it to Brittany's. +- The core information and data will be there, just under different name and data structures. +3) On the CS interface side: what data is he grabbing, and how is he displaying it in the 3D graphics client.git remote add + +- Rotation matrices From 1bf43ac3fd59801e7b7739d29683cd4c19ffe8b0 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 3 Sep 2024 10:43:56 -0500 Subject: [PATCH 26/40] New edges for dodecahedron. --- .../java/trick/srbdisplay/SRBDisplay.java | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 0a2954d9e..9ba2c01db 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -120,19 +120,36 @@ public SingleRigidBodyView() { veh_vrtx_world = new double[veh_vrtx_body.length][3]; veh_vrtx_screen = new int[veh_vrtx_body.length][2]; - // Defines the edges for the dodecahedron. veh_edges = new int[][] - { {0, 2}, {0, 3}, {0, 13}, {0, 14}, {1, 4}, {1, 5}, {1, 12}, {1, 19}, - {2, 6}, {2, 13}, {3, 7}, {3, 14}, {4, 10}, {4, 18}, {5, 11}, {5, 19}, - {6, 10}, {6, 13}, {7, 11}, {7, 14}, {8, 12}, {8, 13}, {9, 12}, {9, 14}, - {8, 16}, {8, 17}, {9, 16}, {9, 17}, {10, 15}, {11, 15}, {12, 17}, {12, 18}, - {13, 16}, {14, 17}, {15, 6}, {15, 7}, {16, 18}, {17, 19}, {18, 4}, {19, 5} + { {0, 13}, {0, 14}, {0, 15}, + {1, 4}, {1, 5}, {1, 12}, + {2, 6}, {2, 13}, {2, 18}, + {3, 7}, {3, 14}, {3, 19}, + {4, 10}, {4, 18}, {4, 1}, + {5, 11}, {5, 19}, {5, 1}, + {6, 2}, {6, 15}, {6, 10}, + {7, 11}, {7, 15}, {7, 3}, + {8, 9}, {8, 13}, {8, 16}, + {9, 14}, {9, 14}, {9, 17}, + {10, 13}, {10,9}, {10, 16}, + {11, 4}, {11, 11}, {11, 6}, + {12, 17}, {12, 15}, {12, 17}, + {13, 0}, {13, 2}, {13, 8}, + {14, 3}, {14, 0}, {14, 9}, + {15, 0}, {15, 7}, {15, 6}, + {16, 8}, {16, 12}, {16, 17}, + {17, 9}, {17, 12}, {17, 19}, + {18, 4}, {18, 2}, {18, 16}, + {19, 3}, {19, 5}, {19, 17} }; + // The order of the vertices in each of the triangles is significant. The points should follow // a path counter clock wise about the triangle's normal vector. The position normal side of // the triangle is the visable side. + // CHANGE THE TRIANGLES TO MATCH NEW EDGES + veh_triangles = new int[][] { {0, 6, 2}, {0, 10, 6}, {0, 15, 10}, // First pentagon using vertices 0, 2, 6, 10, 15 From 34d48353e12013fce88da06215566228ac660e56 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 3 Sep 2024 13:07:02 -0500 Subject: [PATCH 27/40] Triangle normals for the dodecahedron changed. --- .../java/trick/srbdisplay/SRBDisplay.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 9ba2c01db..750ff459a 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -148,20 +148,20 @@ public SingleRigidBodyView() { // a path counter clock wise about the triangle's normal vector. The position normal side of // the triangle is the visable side. - // CHANGE THE TRIANGLES TO MATCH NEW EDGES - veh_triangles = new int[][] { - {0, 6, 2}, {0, 10, 6}, {0, 15, 10}, // First pentagon using vertices 0, 2, 6, 10, 15 - {0, 7, 15}, {0, 3, 7}, {0, 14, 3}, // Second pentagon using vertices 0, 15, 7, 3, 14 - {0, 9, 14}, {0, 13, 9}, {0, 2, 13}, // Third pentagon using vertices 0, 14, 9, 13, 2 - {1, 19, 5}, {1, 17, 19}, {1, 12, 17}, // Fourth pentagon using vertices 1, 5, 19, 17, 12 - {1, 8, 12}, {1, 4, 8}, {1, 10, 4}, // Fifth pentagon using vertices 1, 12, 8, 4, 10 - {1, 10, 18}, {1, 6, 10}, {1, 2, 6}, // Sixth pentagon using vertices 1, 18, 20, 6, 2 - {8, 17, 12}, {8, 16, 17}, {8, 13, 16}, // Seventh pentagon using vertices 8, 12, 17, 16, 13 - {9, 19, 17}, {9, 14, 19}, {9, 13, 14}, // Eighth pentagon using vertices 9, 17, 19, 14, 13 - {4, 15, 10}, {4, 7, 15}, {4, 3, 7}, // Ninth pentagon using vertices 4, 10, 15, 7, 3 - {18, 3, 4}, {18, 14, 3}, {18, 19, 14} // Tenth pentagon using vertices 18, 4, 3, 14, 19 + {0, 8, 13}, {0, 9, 8}, {0, 14, 9}, // First pentagon using vertices 0, 8, 9, 13, 14 + {13, 15, 0}, {13, 6, 15}, {13, 2, 6}, // Second pentagon using vertices 0, 2, 6, 13, 15 + {2, 13, 8}, {2, 8, 16}, {2, 16, 18}, // Third pentagon using vertices 2, 8, 13, 16, 18 + {18, 6, 2}, {18, 10 ,6}, {18, 4, 10}, // Fourth pentagon using vertices 2, 4, 6, 10, 18 + {4, 18, 16}, {4, 16, 12}, {4, 12, 1}, // Fifth pentagon using 1, 4, 12, 16, 18 + {1, 10, 4}, {1, 11, 10}, {1, 5, 11}, // Sixth pentagon using vertices 1, 4, 5, 10, 11 + {5, 1, 12}, {5, 12, 17}, {5, 17, 19}, // Seventh pentagon using vertices 1, 5, 12, 17, 19 + {19, 11, 4}, {19, 7, 11}, {19, 3, 7}, // Eight pentagon using vertices 3, 4, 7, 11, 19 + {3, 19, 17}, {3, 17, 9}, {3, 9, 14}, // Ninth pentagon using vertices 3, 9, 14, 17, 19 + {14, 7, 3}, {14, 15, 7}, {14, 0, 15}, // Tenth pentagon using vertices 0, 3, 7, 14, 15 + {15, 6, 10}, {15, 10, 11}, {15, 11, 7}, // Top pentagon (perpendicular above to xy plane) + {12, 16, 8}, {12, 8, 9}, {12, 9, 17} // Bottom pentagon (perpendicular below to xy plane) }; // Create the normals for the triangles From c0c826e57c8fbea4e92c8699dd665a612115d6fb Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 3 Sep 2024 15:20:48 -0500 Subject: [PATCH 28/40] Sim variable parsing fixed for functionality. --- .../java/trick/srbdisplay/SRBDisplay.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 750ff459a..09c336ce2 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -490,7 +490,7 @@ public static void main(String[] args) throws IOException { double Rxz = 0.0; double Ryx = 0.0; double Ryy = 0.0; - double Ryz = 0.0; + double Ryz = 0.0; double Rzx = 0.0; double Rzy = 0.0; double Rzz = 0.0; @@ -505,7 +505,7 @@ public static void main(String[] args) throws IOException { sd.out.writeBytes("trick.var_set_client_tag(\"SRBDisplay\") \n" + "trick.var_pause() \n" + - "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // Ask about the (1) after each number in the QP + "trick.var_add(\"dyn.body.FORCE_INIT[0]\") \n" + // 36 "trick.var_add(\"dyn.body.FORCE_INIT[1]\") \n" + "trick.var_add(\"dyn.body.FORCE_INIT[2]\") \n" + @@ -562,7 +562,9 @@ public static void main(String[] args) throws IOException { Boolean go = true; while (go) { + String field[]; + try { String line; line = sd.in.readLine(); @@ -596,30 +598,30 @@ public static void main(String[] args) throws IOException { omegaDotY = Double.parseDouble( field[20] ); omegaDotZ = Double.parseDouble( field[21] ); - posX = Double.parseDouble( field[21] ); - posY = Double.parseDouble( field[22] ); - posZ = Double.parseDouble( field[23] ); + posX = Double.parseDouble( field[22] ); + posY = Double.parseDouble( field[23] ); + posZ = Double.parseDouble( field[24] ); - Rxx = Double.parseDouble( field[24] ); - Rxy = Double.parseDouble( field[25] ); - Rxz = Double.parseDouble( field[26] ); - Ryx = Double.parseDouble( field[27] ); - Ryy = Double.parseDouble( field[28] ); - Ryz = Double.parseDouble( field[29] ); - Rzx = Double.parseDouble( field[30] ); - Rzy = Double.parseDouble( field[31] ); - Rzz = Double.parseDouble( field[32] ); + Rxx = Double.parseDouble( field[25] ); + Rxy = Double.parseDouble( field[26] ); + Rxz = Double.parseDouble( field[27] ); + Ryx = Double.parseDouble( field[28] ); + Ryy = Double.parseDouble( field[29] ); + Ryz = Double.parseDouble( field[30] ); + Rzx = Double.parseDouble( field[31] ); + Rzy = Double.parseDouble( field[32] ); + Rzz = Double.parseDouble( field[33] ); - velX = Double.parseDouble( field[33] ); - velY = Double.parseDouble( field[34] ); - velZ = Double.parseDouble( field[35] ); + velX = Double.parseDouble( field[34] ); + velY = Double.parseDouble( field[35] ); + velZ = Double.parseDouble( field[36] ); // Set the body position singleRigidBodyView.setBodyPos(posX, posY, posZ); singleRigidBodyView.setBodyToWorldRotation( Rxx, Rxy, Rxz, - Ryx, Ryy, Ryz, - Rzx, Rzy, Rzz ); + Ryx, Ryy, Ryz, + Rzx, Rzy, Rzz ); } catch (IOException | NullPointerException e ) { go = false; @@ -627,5 +629,4 @@ public static void main(String[] args) throws IOException { sd.drawSRBView(); } } - } \ No newline at end of file From 28d62b8330dc04e06a732a35c7bf1d683ef7bf69 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 3 Sep 2024 16:07:31 -0500 Subject: [PATCH 29/40] Edges of dodecahedron fixed. --- .../main/java/trick/srbdisplay/SRBDisplay.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 09c336ce2..a4ea6eef4 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -126,21 +126,21 @@ public SingleRigidBodyView() { {2, 6}, {2, 13}, {2, 18}, {3, 7}, {3, 14}, {3, 19}, {4, 10}, {4, 18}, {4, 1}, - {5, 11}, {5, 19}, {5, 1}, + {5, 11}, {5, 19}, {5, 1}, {6, 2}, {6, 15}, {6, 10}, {7, 11}, {7, 15}, {7, 3}, {8, 9}, {8, 13}, {8, 16}, - {9, 14}, {9, 14}, {9, 17}, - {10, 13}, {10,9}, {10, 16}, - {11, 4}, {11, 11}, {11, 6}, - {12, 17}, {12, 15}, {12, 17}, - {13, 0}, {13, 2}, {13, 8}, + {9, 14}, {9, 8}, {9, 17}, + {10, 4}, {10,6}, {10, 11}, + {11, 10}, {11, 7}, {11, 5}, + {12, 1}, {12, 16}, {12, 17}, + {13, 0}, {13, 2}, {13, 8}, {14, 3}, {14, 0}, {14, 9}, {15, 0}, {15, 7}, {15, 6}, - {16, 8}, {16, 12}, {16, 17}, + {16, 18}, {16, 8}, {16, 12}, {17, 9}, {17, 12}, {17, 19}, {18, 4}, {18, 2}, {18, 16}, - {19, 3}, {19, 5}, {19, 17} + {19, 3}, {19, 5}, {19, 17} }; From 0ed8118ddd2994aec56d7422313e769019115129 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 3 Sep 2024 16:24:39 -0500 Subject: [PATCH 30/40] Changed paint color for the shape to change based on location. --- .../src/main/java/trick/srbdisplay/SRBDisplay.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index a4ea6eef4..63872a53f 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -322,13 +322,10 @@ private void doDrawing( Graphics g) { // The color intensity is a combination of ambient light intensity, // and diffuse reflection intensity. double color_intensity = (ambient + (1.0 - ambient) * diffuse_intensity); - - - g2d.setPaint(new Color( 220, 220, 220)); // FOR TESTING. ================================================================================================================================ - /* g2d.setPaint( new Color( (int)(bodyFillColor.getRed() * color_intensity), + g2d.setPaint( new Color( (int)(bodyFillColor.getRed() * color_intensity), (int)(bodyFillColor.getGreen() * color_intensity), - (int)(bodyFillColor.getBlue() * color_intensity))); == CHANGE LATER */ + (int)(bodyFillColor.getBlue() * color_intensity))); // Draw the triangle. int triangle_poly_x[] = {0, 0, 0}; From d5d1509ce0eb56bb16c6fc9d4013e23d768e58c7 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 4 Sep 2024 09:34:17 -0500 Subject: [PATCH 31/40] Deleted unnecessary JViewport library. --- .../src/main/java/trick/srbdisplay/SRBDisplay.java | 1 - 1 file changed, 1 deletion(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 63872a53f..1a9a3b0c2 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -22,7 +22,6 @@ // Swing is a GUI widget toolkit. import javax.swing.JFrame; // Allows you to manage a top-level window. import javax.swing.JPanel; // The stuff within the window (controls, buttons, etc.). -//import javax.swing.JViewport.ViewListener; import javax.swing.event.MouseInputAdapter; import trick.matrixOps.MatrixOps; From 4559736230f3a027e8a28306cd91f22774161189 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 4 Sep 2024 09:52:03 -0500 Subject: [PATCH 32/40] Increased length of x, y, and z axis lines. --- .../src/main/java/trick/srbdisplay/SRBDisplay.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 1a9a3b0c2..04c319723 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -364,13 +364,13 @@ private void doDrawing( Graphics g) { // ========================== // Draw World Coordinate Axes double origin_world[] = {0.0, 0.0, 0.0}; - double x_axis_world[] = {5.0, 0.0, 0.0}; + double x_axis_world[] = {9.0, 0.0, 0.0}; drawLineSegmentInWorld(g2d, Color.RED, origin_world, x_axis_world); drawLabelInWorld(g2d, Color.RED, x_axis_world, "X"); - double y_axis_world[] = {0.0, 5.0, 0.0}; + double y_axis_world[] = {0.0, 9.0, 0.0}; drawLineSegmentInWorld(g2d, Color.GREEN, origin_world, y_axis_world); drawLabelInWorld(g2d, Color.GREEN, y_axis_world, "Y"); - double z_axis_world[] = {0.0, 0.0, 5.0}; + double z_axis_world[] = {0.0, 0.0, 9.0}; drawLineSegmentInWorld(g2d, Color.BLUE, origin_world, z_axis_world); drawLabelInWorld(g2d, Color.BLUE, z_axis_world, "Z"); } From fdf29f0e2bd02467ada36e4ce6bf914ba0cfb1cd Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 4 Sep 2024 09:55:33 -0500 Subject: [PATCH 33/40] Increased vantage distance. --- .../src/main/java/trick/srbdisplay/SRBDisplay.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 04c319723..227602ad1 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -75,7 +75,7 @@ public SingleRigidBodyView() { // Location of the observer, looking toward the world's origin. vantageAzimuth = Math.toRadians(45.0); vantageElevation = Math.toRadians(20.0); - vantageDistance = 12.0; + vantageDistance = 22.0; // Half field of view angle beta = Math.toRadians(40.0); From ad53246904d5a350115a011d390d2cef1ab953d0 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 4 Sep 2024 10:59:31 -0500 Subject: [PATCH 34/40] Fixed triangles and normals. --- .../src/main/java/trick/srbdisplay/SRBDisplay.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index 227602ad1..d71380fe1 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -149,14 +149,14 @@ public SingleRigidBodyView() { veh_triangles = new int[][] { - {0, 8, 13}, {0, 9, 8}, {0, 14, 9}, // First pentagon using vertices 0, 8, 9, 13, 14 + {0, 14, 9}, {0, 9, 8}, {0, 8, 13}, // First pentagon using vertices 0, 8, 9, 13, 14 {13, 15, 0}, {13, 6, 15}, {13, 2, 6}, // Second pentagon using vertices 0, 2, 6, 13, 15 {2, 13, 8}, {2, 8, 16}, {2, 16, 18}, // Third pentagon using vertices 2, 8, 13, 16, 18 {18, 6, 2}, {18, 10 ,6}, {18, 4, 10}, // Fourth pentagon using vertices 2, 4, 6, 10, 18 {4, 18, 16}, {4, 16, 12}, {4, 12, 1}, // Fifth pentagon using 1, 4, 12, 16, 18 {1, 10, 4}, {1, 11, 10}, {1, 5, 11}, // Sixth pentagon using vertices 1, 4, 5, 10, 11 {5, 1, 12}, {5, 12, 17}, {5, 17, 19}, // Seventh pentagon using vertices 1, 5, 12, 17, 19 - {19, 11, 4}, {19, 7, 11}, {19, 3, 7}, // Eight pentagon using vertices 3, 4, 7, 11, 19 + {19, 11, 5}, {19, 7, 11}, {19, 3, 7}, // Eight pentagon using vertices 3, 4, 7, 11, 19 {3, 19, 17}, {3, 17, 9}, {3, 9, 14}, // Ninth pentagon using vertices 3, 9, 14, 17, 19 {14, 7, 3}, {14, 15, 7}, {14, 0, 15}, // Tenth pentagon using vertices 0, 3, 7, 14, 15 {15, 6, 10}, {15, 10, 11}, {15, 11, 7}, // Top pentagon (perpendicular above to xy plane) From 5259f5f0eee6d184087213985840206813e9862e Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 4 Sep 2024 11:17:05 -0500 Subject: [PATCH 35/40] Commented on the edges. --- .../src/main/java/trick/srbdisplay/SRBDisplay.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java index d71380fe1..3597ea900 100644 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java +++ b/trick_sims/SIM_singlerigidbody/models/singlerigidbodygraphics/src/main/java/trick/srbdisplay/SRBDisplay.java @@ -119,6 +119,8 @@ public SingleRigidBodyView() { veh_vrtx_world = new double[veh_vrtx_body.length][3]; veh_vrtx_screen = new int[veh_vrtx_body.length][2]; + // The edges of the dodecahedron are defined by taking a vertex at the UM or LM of the shape, and defining an edge to the top vertex (for UM) or bottom vertex (for LM), and defining edges to + // each immediate adjacent vertex. The resulting pattern looks like 3 spokes coming out of the original UM or LM vertex. veh_edges = new int[][] { {0, 13}, {0, 14}, {0, 15}, {1, 4}, {1, 5}, {1, 12}, @@ -350,7 +352,6 @@ private void doDrawing( Graphics g) { g2d.drawLine( point0[0], point0[1], point1[0], point1[1]); } - // ============================ // Draw Center of Gravity Point int CG_screen[] = {0, 0}; int CG_symbol_size = 15; @@ -361,7 +362,6 @@ private void doDrawing( Graphics g) { g2d.fillArc( CG_screen[0]-CG_symbol_size/2, CG_screen[1]-CG_symbol_size/2, CG_symbol_size, CG_symbol_size, 0, 90 ); g2d.fillArc( CG_screen[0]-CG_symbol_size/2, CG_screen[1]-CG_symbol_size/2, CG_symbol_size, CG_symbol_size, 180, 90); - // ========================== // Draw World Coordinate Axes double origin_world[] = {0.0, 0.0, 0.0}; double x_axis_world[] = {9.0, 0.0, 0.0}; From 12087da811e2496aef940217f3941d43759bef17 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 18 Sep 2024 16:19:20 -0500 Subject: [PATCH 36/40] Deleted the notes file. --- trick_sims/singlebody_notes | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 trick_sims/singlebody_notes diff --git a/trick_sims/singlebody_notes b/trick_sims/singlebody_notes deleted file mode 100644 index 00b99dcb9..000000000 --- a/trick_sims/singlebody_notes +++ /dev/null @@ -1,16 +0,0 @@ -Questions for Sean regarding the graphics client: -1) Could you provide the SIM to me? -2) Should I use my personal Github account or a NASA one? -3) What is the timeframe of this project? -4) Goals and expectations for this project? -5) Order in which I should develop the client? What files first, etc. -6) Best practice with commits and pulls, etc. - - -Get information from John: -1) Figure out what variables in John's sim his graphics client is grabbing, and map it onto Brittany's sim. -2) Figure out how the data is parsed in John's sim and apply it to Brittany's. -- The core information and data will be there, just under different name and data structures. -3) On the CS interface side: what data is he grabbing, and how is he displaying it in the 3D graphics client.git remote add - -- Rotation matrices From c9d85c2aa05767fe2f04b7cd35eeff44c44c53e7 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 29 Oct 2024 11:11:30 -0500 Subject: [PATCH 37/40] Removed trick.frame_long_on() from splashdown SIM's realtime.py in modified data directory. --- .gitignore | 5 +++++ trick_sims/SIM_splashdown/Modified_data/realtime.py | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 87af3fb48..9c2ca5122 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,8 @@ trickops_logs/ coverage.info *.dSYM *.log +trick_sims/SIM_singlerigidbody/README.md.orig +trick_sims/SIM_singlerigidbody/S_define.orig +trick_sims/SIM_singlerigidbody/RUN_test/IdToColors.txt +trick_sims/SIM_singlerigidbody/RUN_test/input.py.orig +trick_sims/SIM_singlerigidbody/S_overrides.mk.orig diff --git a/trick_sims/SIM_splashdown/Modified_data/realtime.py b/trick_sims/SIM_splashdown/Modified_data/realtime.py index 778ce9c3a..acf31873a 100755 --- a/trick_sims/SIM_splashdown/Modified_data/realtime.py +++ b/trick_sims/SIM_splashdown/Modified_data/realtime.py @@ -8,5 +8,3 @@ simControlPanel = trick.SimControlPanel() trick.add_external_application(simControlPanel) - -trick.frame_log_on() From 10aa6f7e4c035c806a03f42472584a32717e8891 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Tue, 29 Oct 2024 11:19:15 -0500 Subject: [PATCH 38/40] Deleted sims directory (including images sub directory). --- .../sims/.trick/__init__.py | 51 - .../sims/.trick/exception.py | 33 - .../m2ddd17f9284f93dc40b8a127bd142ae5.py | 1213 -- .../me18dda184e7a3a5300b5efa2b558f756.py | 395 - .../sims/.trick/shortcuts.py | 138 - .../sims/.trick/sim_services.py | 13728 ---------------- .../sims/.trick/swig_double.py | 238 - .../sims/.trick/swig_int.py | 301 - .../sims/.trick/swig_ref.py | 132 - .../SIM_singlerigidbody/sims/.trick/top.py | 109 - .../sims/.trick/unit_test.py | 72 - .../sims/Modified_data/realtime.py | 12 - .../sims/Modified_data/state_data.dr | 54 - trick_sims/SIM_singlerigidbody/sims/README.md | 168 - .../sims/SET_test/RUN_1/input.py | 81 - trick_sims/SIM_singlerigidbody/sims/S_define | 30 - .../SIM_singlerigidbody/sims/S_overrides.mk | 24 - .../sims/images/AccOmega.png | Bin 1334 -> 0 bytes .../SIM_singlerigidbody/sims/images/Angle.png | Bin 3211 -> 0 bytes .../sims/images/Angularvelocity.png | Bin 3445 -> 0 bytes .../sims/images/Centerofmass.png | Bin 1890 -> 0 bytes .../sims/images/EquationsofMotion.png | Bin 7102 -> 0 bytes .../SIM_singlerigidbody/sims/images/Force.png | Bin 1647 -> 0 bytes .../sims/images/ForceTorque.png | Bin 886 -> 0 bytes .../sims/images/ForceTorqueRemain.png | Bin 3401 -> 0 bytes .../sims/images/Inertia.png | Bin 1863 -> 0 bytes .../SIM_singlerigidbody/sims/images/Mass.png | Bin 2065 -> 0 bytes .../sims/images/MassMatrix.png | Bin 2953 -> 0 bytes .../sims/images/Position.png | Bin 3476 -> 0 bytes .../sims/images/Radius.png | Bin 1696 -> 0 bytes .../sims/images/Torque.png | Bin 2917 -> 0 bytes .../sims/images/Vectora.png | Bin 1493 -> 0 bytes .../sims/images/Velocity.png | Bin 3279 -> 0 bytes .../SIM_singlerigidbody/sims/images/koviz.png | Bin 160434 -> 0 bytes .../sims/images/trick-dp.png | Bin 90375 -> 0 bytes trick_sims/SIM_singlerigidbody/sims/trick.zip | Bin 217349 -> 0 bytes 36 files changed, 16779 deletions(-) delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/exception.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/top.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr delete mode 100644 trick_sims/SIM_singlerigidbody/sims/README.md delete mode 100644 trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py delete mode 100644 trick_sims/SIM_singlerigidbody/sims/S_define delete mode 100644 trick_sims/SIM_singlerigidbody/sims/S_overrides.mk delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/AccOmega.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Angle.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Angularvelocity.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Centerofmass.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/EquationsofMotion.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Force.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/ForceTorque.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/ForceTorqueRemain.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Inertia.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Mass.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/MassMatrix.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Position.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Radius.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Torque.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Vectora.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/Velocity.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/koviz.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/images/trick-dp.png delete mode 100644 trick_sims/SIM_singlerigidbody/sims/trick.zip diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py b/trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py deleted file mode 100644 index 0aa0fcc84..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/__init__.py +++ /dev/null @@ -1,51 +0,0 @@ -from pkgutil import extend_path -__path__ = extend_path(__path__, __name__) -import sys -import os -sys.path.append(os.getcwd() + "/trick.zip/trick") - -import _sim_services -from sim_services import * - -# create "all_cvars" to hold all global/static vars -all_cvars = new_cvar_list() -combine_cvars(all_cvars, cvar) -cvar = None - -# /users/bnwalla1/SingleRigidBody/include/body.hh -import _me18dda184e7a3a5300b5efa2b558f756 -combine_cvars(all_cvars, cvar) -cvar = None - -# /users/bnwalla1/SingleRigidBody/sims/S_source.hh -import _m2ddd17f9284f93dc40b8a127bd142ae5 -combine_cvars(all_cvars, cvar) -cvar = None - -# /users/bnwalla1/SingleRigidBody/include/body.hh -from me18dda184e7a3a5300b5efa2b558f756 import * -# /users/bnwalla1/SingleRigidBody/sims/S_source.hh -from m2ddd17f9284f93dc40b8a127bd142ae5 import * - -# S_source.hh -import _m2ddd17f9284f93dc40b8a127bd142ae5 -from m2ddd17f9284f93dc40b8a127bd142ae5 import * - -import _top -import top - -import _swig_double -import swig_double - -import _swig_int -import swig_int - -import _swig_ref -import swig_ref - -from shortcuts import * - -from exception import * - -cvar = all_cvars - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/exception.py b/trick_sims/SIM_singlerigidbody/sims/.trick/exception.py deleted file mode 100644 index d3d55c9dd..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/exception.py +++ /dev/null @@ -1,33 +0,0 @@ - -""" -Overrides the default exception handler with our own. -This exception handler filters out lines in the stack trace that are in SWIG auto generated files -""" - -import sys -import trick -import traceback - -def noswig_excepthook(exctype, value, tb): - # autogen_dir holds the autogenerated directory in the simulation - autogen_dir = trick.command_line_args_get_default_dir() + "/trick" - # stack_trace contains the traceback information as a list of tuples. - # The tuples hold the (file_name, line, function name, text) - stack_trace = traceback.extract_tb(tb) - # Interate through the traceback stopping at the first line where - # the file_name resides in the generated directory - ii = 0 - for item in stack_trace: - if item[0].startswith(autogen_dir): - break - ii += 1 - # print the traceback up to the point where the auto generated code starts - traceback.print_exception(exctype, value, tb, ii) - -# set the exception handler to ours. -sys.excepthook = noswig_excepthook - -# This function can be called to restore the default exception hook. -def set_default_excepthook(): - sys.excepthook = sys.__excepthook__ - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py b/trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py deleted file mode 100644 index af618f8c7..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/m2ddd17f9284f93dc40b8a127bd142ae5.py +++ /dev/null @@ -1,1213 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.12 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. - -from sys import version_info as _swig_python_version_info -if _swig_python_version_info >= (2, 7, 0): - def swig_import_helper(): - import importlib - pkg = __name__.rpartition('.')[0] - mname = '.'.join((pkg, '_m2ddd17f9284f93dc40b8a127bd142ae5')).lstrip('.') - try: - return importlib.import_module(mname) - except ImportError: - return importlib.import_module('_m2ddd17f9284f93dc40b8a127bd142ae5') - _m2ddd17f9284f93dc40b8a127bd142ae5 = swig_import_helper() - del swig_import_helper -elif _swig_python_version_info >= (2, 6, 0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_m2ddd17f9284f93dc40b8a127bd142ae5', [dirname(__file__)]) - except ImportError: - import _m2ddd17f9284f93dc40b8a127bd142ae5 - return _m2ddd17f9284f93dc40b8a127bd142ae5 - try: - _mod = imp.load_module('_m2ddd17f9284f93dc40b8a127bd142ae5', fp, pathname, description) - finally: - if fp is not None: - fp.close() - return _mod - _m2ddd17f9284f93dc40b8a127bd142ae5 = swig_import_helper() - del swig_import_helper -else: - import _m2ddd17f9284f93dc40b8a127bd142ae5 -del _swig_python_version_info - -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. - -try: - import builtins as __builtin__ -except ImportError: - import __builtin__ - -def _swig_setattr_nondynamic(self, class_type, name, value, static=1): - if (name == "thisown"): - return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name, None) - if method: - return method(self, value) - if (not static): - if _newclass: - object.__setattr__(self, name, value) - else: - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - - -def _swig_setattr(self, class_type, name, value): - return _swig_setattr_nondynamic(self, class_type, name, value, 0) - - -def _swig_getattr(self, class_type, name): - if (name == "thisown"): - return self.this.own() - method = class_type.__swig_getmethods__.get(name, None) - if method: - return method(self) - raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) - - -def _swig_repr(self): - try: - strthis = "proxy of " + self.this.__repr__() - except __builtin__.Exception: - strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except __builtin__.Exception: - class _object: - pass - _newclass = 0 - -class SwigPyIterator(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SwigPyIterator - __del__ = lambda self: None - - def value(self): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_value(self) - - def incr(self, n=1): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_incr(self, n) - - def decr(self, n=1): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_decr(self, n) - - def distance(self, x): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_distance(self, x) - - def equal(self, x): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_equal(self, x) - - def copy(self): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_copy(self) - - def next(self): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_next(self) - - def __next__(self): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___next__(self) - - def previous(self): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_previous(self) - - def advance(self, n): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_advance(self, n) - - def __eq__(self, x): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___eq__(self, x) - - def __ne__(self, x): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___ne__(self, x) - - def __iadd__(self, n): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___iadd__(self, n) - - def __isub__(self, n): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___isub__(self, n) - - def __add__(self, n): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___add__(self, n) - - def __sub__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator___sub__(self, *args) - def __iter__(self): - return self -SwigPyIterator_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SwigPyIterator_swigregister -SwigPyIterator_swigregister(SwigPyIterator) - - -def _swig_getattr(self,class_type,name): - if (name == "thisown"): return self.this.own() - method = class_type.__swig_getmethods__.get(name,None) - if method: return method(self) - all_keys = [attr for attr in dir(class_type) if not attr.startswith('__')and attr != '_s' ] - data_keys = sorted(class_type.__swig_setmethods__.keys()) - method_keys = [ x for x in all_keys if x not in data_keys ] - raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % - (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) - -def _swig_setattr_nondynamic(self,class_type,name,value,static=1): - if (name == "thisown"): return self.this.own(value) - if (name == "this"): -# this line is changed to handle older swigs that used PySwigObject instead of the current SwigPyObject - if type(value).__name__ == 'SwigPyObject' or type(value).__name__ == 'PySwigObject' : - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name,None) - if method: return method(self,value) - if (not static) or hasattr(self,name): - self.__dict__[name] = value - else: - all_keys = [attr for attr in dir(class_type) if not attr.startswith('__') and attr != '_s' ] - data_keys = sorted(class_type.__swig_setmethods__.keys()) - method_keys = [ x for x in all_keys if x not in data_keys ] - raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % - (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) - -def _swig_setattr(self,class_type,name,value): - return _swig_setattr_nondynamic(self,class_type,name,value,1) - -import sim_services -import me18dda184e7a3a5300b5efa2b558f756 -class SimEnvironment(sim_services.Environment): - __swig_setmethods__ = {} - for _s in [sim_services.Environment]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, SimEnvironment, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.Environment]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, SimEnvironment, name) - __repr__ = _swig_repr - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_SimEnvironment() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "SimEnvironment", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SimEnvironment___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SimEnvironment___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SimEnvironment - __del__ = lambda self: None -SimEnvironment_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SimEnvironment_swigregister -SimEnvironment_swigregister(SimEnvironment) - - -def exec_collect_init(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.exec_collect_init(*args) -exec_collect_init = _m2ddd17f9284f93dc40b8a127bd142ae5.exec_collect_init -class SysSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, SysSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, SysSimObject, name) - __repr__ = _swig_repr - __swig_getmethods__["sched"] = _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_sched_get - if _newclass: - sched = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_sched_get) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_SysSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "SysSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SysSimObject - __del__ = lambda self: None -SysSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SysSimObject_swigregister -SysSimObject_swigregister(SysSimObject) - -class MemoryManagerSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MemoryManagerSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MemoryManagerSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["mm"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_set - __swig_getmethods__["mm"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_get - if _newclass: - mm = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_mm_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_MemoryManagerSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "MemoryManagerSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_MemoryManagerSimObject - __del__ = lambda self: None -MemoryManagerSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.MemoryManagerSimObject_swigregister -MemoryManagerSimObject_swigregister(MemoryManagerSimObject) - -class CheckPointRestartSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, CheckPointRestartSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, CheckPointRestartSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["cpr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_set - __swig_getmethods__["cpr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_get - if _newclass: - cpr = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_get, _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_cpr_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_CheckPointRestartSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "CheckPointRestartSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_CheckPointRestartSimObject - __del__ = lambda self: None -CheckPointRestartSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.CheckPointRestartSimObject_swigregister -CheckPointRestartSimObject_swigregister(CheckPointRestartSimObject) - -class SieSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, SieSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, SieSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["sie"] = _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_set - __swig_getmethods__["sie"] = _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_get - if _newclass: - sie = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_get, _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_sie_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_SieSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "SieSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_SieSimObject - __del__ = lambda self: None -SieSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.SieSimObject_swigregister -SieSimObject_swigregister(SieSimObject) - -class CommandLineArgumentsSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, CommandLineArgumentsSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, CommandLineArgumentsSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["cmd_args"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_set - __swig_getmethods__["cmd_args"] = _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_get - if _newclass: - cmd_args = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_get, _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_cmd_args_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_CommandLineArgumentsSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "CommandLineArgumentsSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_CommandLineArgumentsSimObject - __del__ = lambda self: None -CommandLineArgumentsSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.CommandLineArgumentsSimObject_swigregister -CommandLineArgumentsSimObject_swigregister(CommandLineArgumentsSimObject) - -class MessageSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["mpublisher"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_set - __swig_getmethods__["mpublisher"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_get - if _newclass: - mpublisher = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mpublisher_set) - __swig_setmethods__["mcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_set - __swig_getmethods__["mcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_get - if _newclass: - mcout = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mcout_set) - __swig_setmethods__["mtcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_set - __swig_getmethods__["mtcout"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_get - if _newclass: - mtcout = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mtcout_set) - __swig_getmethods__["mfile"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mfile_get - if _newclass: - mfile = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mfile_get) - __swig_setmethods__["mdevice"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_set - __swig_getmethods__["mdevice"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_get - if _newclass: - mdevice = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_mdevice_set) - __swig_getmethods__["pfile"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_pfile_get - if _newclass: - pfile = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_pfile_get) - __swig_setmethods__["message_file_manager"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_set - __swig_getmethods__["message_file_manager"] = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_get - if _newclass: - message_file_manager = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_get, _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_message_file_manager_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_MessageSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "MessageSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_call_function_double(self, *args) - - def separate_thread_set_enabled(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_separate_thread_set_enabled(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_MessageSimObject - __del__ = lambda self: None -MessageSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.MessageSimObject_swigregister -MessageSimObject_swigregister(MessageSimObject) - -class JITSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, JITSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, JITSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["jit"] = _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_set - __swig_getmethods__["jit"] = _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_get - if _newclass: - jit = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_get, _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_jit_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_JITSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "JITSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_JITSimObject - __del__ = lambda self: None -JITSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.JITSimObject_swigregister -JITSimObject_swigregister(JITSimObject) - -class InputProcessorSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, InputProcessorSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, InputProcessorSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["ip"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_set - __swig_getmethods__["ip"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_get - if _newclass: - ip = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_get, _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_ip_set) - __swig_setmethods__["mtv"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_set - __swig_getmethods__["mtv"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_get - if _newclass: - mtv = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_get, _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_mtv_set) - __swig_setmethods__["units_map_ptr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_set - __swig_getmethods__["units_map_ptr"] = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_get - if _newclass: - units_map_ptr = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_get, _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_units_map_ptr_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_InputProcessorSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "InputProcessorSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_InputProcessorSimObject - __del__ = lambda self: None - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject___len__(self, *args) -InputProcessorSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.InputProcessorSimObject_swigregister -InputProcessorSimObject_swigregister(InputProcessorSimObject) - -class ThreadProcessEventSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadProcessEventSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ThreadProcessEventSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_set - __swig_getmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_get - if _newclass: - ep = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_get, _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_ep_set) - - def __init__(self, *args, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_ThreadProcessEventSimObject(*args) - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - this.own(0) - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "ThreadProcessEventSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_ThreadProcessEventSimObject - __del__ = lambda self: None -ThreadProcessEventSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.ThreadProcessEventSimObject_swigregister -ThreadProcessEventSimObject_swigregister(ThreadProcessEventSimObject) - -class EventManagerSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, EventManagerSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, EventManagerSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["em"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_set - __swig_getmethods__["em"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_get - if _newclass: - em = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_em_set) - __swig_setmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_set - __swig_getmethods__["ep"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_get - if _newclass: - ep = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_ep_set) - __swig_setmethods__["thread_process_event_so"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_set - __swig_getmethods__["thread_process_event_so"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_get - if _newclass: - thread_process_event_so = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_set) - __swig_setmethods__["thread_process_event_so_names"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_set - __swig_getmethods__["thread_process_event_so_names"] = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_get - if _newclass: - thread_process_event_so_names = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_get, _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_thread_process_event_so_names_set) - - def create_thread_process_event(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_create_thread_process_event(self, *args) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_EventManagerSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "EventManagerSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_EventManagerSimObject - __del__ = lambda self: None - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject___len__(self, *args) -EventManagerSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.EventManagerSimObject_swigregister -EventManagerSimObject_swigregister(EventManagerSimObject) - -class VariableServerSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, VariableServerSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["vs"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_set - __swig_getmethods__["vs"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_get - if _newclass: - vs = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_get, _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_vs_set) - __swig_getmethods__["sim_control_panel"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_sim_control_panel_get - if _newclass: - sim_control_panel = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_sim_control_panel_get) - __swig_getmethods__["trick_view"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_trick_view_get - if _newclass: - trick_view = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_trick_view_get) - __swig_getmethods__["malfunctions_trick_view"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_malfunctions_trick_view_get - if _newclass: - malfunctions_trick_view = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_malfunctions_trick_view_get) - __swig_getmethods__["stripchart"] = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_stripchart_get - if _newclass: - stripchart = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_stripchart_get) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_VariableServerSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "VariableServerSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_VariableServerSimObject - __del__ = lambda self: None -VariableServerSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.VariableServerSimObject_swigregister -VariableServerSimObject_swigregister(VariableServerSimObject) - -class DataRecordDispatcherSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordDispatcherSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, DataRecordDispatcherSimObject, name) - __repr__ = _swig_repr - __swig_getmethods__["drd"] = _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_drd_get - if _newclass: - drd = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_drd_get) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_DataRecordDispatcherSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "DataRecordDispatcherSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_DataRecordDispatcherSimObject - __del__ = lambda self: None -DataRecordDispatcherSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.DataRecordDispatcherSimObject_swigregister -DataRecordDispatcherSimObject_swigregister(DataRecordDispatcherSimObject) - -class RTSyncSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RTSyncSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RTSyncSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["gtod_clock"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_set - __swig_getmethods__["gtod_clock"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_get - if _newclass: - gtod_clock = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_get, _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_gtod_clock_set) - __swig_setmethods__["itimer"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_set - __swig_getmethods__["itimer"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_get - if _newclass: - itimer = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_get, _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_itimer_set) - __swig_setmethods__["rt_sync"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_set - __swig_getmethods__["rt_sync"] = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_get - if _newclass: - rt_sync = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_get, _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_rt_sync_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_RTSyncSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "RTSyncSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_RTSyncSimObject - __del__ = lambda self: None -RTSyncSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.RTSyncSimObject_swigregister -RTSyncSimObject_swigregister(RTSyncSimObject) - -class FrameLogSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, FrameLogSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, FrameLogSimObject, name) - __repr__ = _swig_repr - __swig_getmethods__["frame_log"] = _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_frame_log_get - if _newclass: - frame_log = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_frame_log_get) - - def __init__(self, *args, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_FrameLogSimObject(*args) - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - this.own(0) - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "FrameLogSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_FrameLogSimObject - __del__ = lambda self: None -FrameLogSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.FrameLogSimObject_swigregister -FrameLogSimObject_swigregister(FrameLogSimObject) - -class UnitTestSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, UnitTestSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, UnitTestSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["unit_tests"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_set - __swig_getmethods__["unit_tests"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_get - if _newclass: - unit_tests = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_get, _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_unit_tests_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_UnitTestSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "UnitTestSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_UnitTestSimObject - __del__ = lambda self: None -UnitTestSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.UnitTestSimObject_swigregister -UnitTestSimObject_swigregister(UnitTestSimObject) - -class UdUnitsSimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, UdUnitsSimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, UdUnitsSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["udunits"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_set - __swig_getmethods__["udunits"] = _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_get - if _newclass: - udunits = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_get, _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_udunits_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_UdUnitsSimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "UdUnitsSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_UdUnitsSimObject - __del__ = lambda self: None -UdUnitsSimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.UdUnitsSimObject_swigregister -UdUnitsSimObject_swigregister(UdUnitsSimObject) - -class BodySimObject(sim_services.SimObject): - __swig_setmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, BodySimObject, name, value) - __swig_getmethods__ = {} - for _s in [sim_services.SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, BodySimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["body"] = _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_set - __swig_getmethods__["body"] = _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_get - if _newclass: - body = _swig_property(_m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_get, _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_body_set) - - def __init__(self, **kwargs): - import _sim_services - this = _m2ddd17f9284f93dc40b8a127bd142ae5.new_BodySimObject() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "BodySimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def call_function(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_call_function_double(self, *args) - - def __getitem__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject___getitem__(self, *args) - - def __len__(self, *args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject___len__(self, *args) - __swig_destroy__ = _m2ddd17f9284f93dc40b8a127bd142ae5.delete_BodySimObject - __del__ = lambda self: None -BodySimObject_swigregister = _m2ddd17f9284f93dc40b8a127bd142ae5.BodySimObject_swigregister -BodySimObject_swigregister(BodySimObject) - - -def castAsSimEnvironment(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSimEnvironment(*args) -castAsSimEnvironment = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSimEnvironment - -def castAsSysSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSysSimObject(*args) -castAsSysSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSysSimObject - -def castAsMemoryManagerSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMemoryManagerSimObject(*args) -castAsMemoryManagerSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMemoryManagerSimObject - -def castAsCheckPointRestartSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCheckPointRestartSimObject(*args) -castAsCheckPointRestartSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCheckPointRestartSimObject - -def castAsSieSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSieSimObject(*args) -castAsSieSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsSieSimObject - -def castAsCommandLineArgumentsSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCommandLineArgumentsSimObject(*args) -castAsCommandLineArgumentsSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsCommandLineArgumentsSimObject - -def castAsMessageSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMessageSimObject(*args) -castAsMessageSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsMessageSimObject - -def castAsJITSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsJITSimObject(*args) -castAsJITSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsJITSimObject - -def castAsInputProcessorSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsInputProcessorSimObject(*args) -castAsInputProcessorSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsInputProcessorSimObject - -def castAsThreadProcessEventSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsThreadProcessEventSimObject(*args) -castAsThreadProcessEventSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsThreadProcessEventSimObject - -def castAsEventManagerSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsEventManagerSimObject(*args) -castAsEventManagerSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsEventManagerSimObject - -def castAsVariableServerSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsVariableServerSimObject(*args) -castAsVariableServerSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsVariableServerSimObject - -def castAsDataRecordDispatcherSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsDataRecordDispatcherSimObject(*args) -castAsDataRecordDispatcherSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsDataRecordDispatcherSimObject - -def castAsRTSyncSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsRTSyncSimObject(*args) -castAsRTSyncSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsRTSyncSimObject - -def castAsFrameLogSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsFrameLogSimObject(*args) -castAsFrameLogSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsFrameLogSimObject - -def castAsUnitTestSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUnitTestSimObject(*args) -castAsUnitTestSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUnitTestSimObject - -def castAsUdUnitsSimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUdUnitsSimObject(*args) -castAsUdUnitsSimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsUdUnitsSimObject - -def castAsBodySimObject(*args): - return _m2ddd17f9284f93dc40b8a127bd142ae5.castAsBodySimObject(*args) -castAsBodySimObject = _m2ddd17f9284f93dc40b8a127bd142ae5.castAsBodySimObject -# This file is compatible with both classic and new-style classes. - - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py b/trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py deleted file mode 100644 index fb19ecc54..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/me18dda184e7a3a5300b5efa2b558f756.py +++ /dev/null @@ -1,395 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.12 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. - -from sys import version_info as _swig_python_version_info -if _swig_python_version_info >= (2, 7, 0): - def swig_import_helper(): - import importlib - pkg = __name__.rpartition('.')[0] - mname = '.'.join((pkg, '_me18dda184e7a3a5300b5efa2b558f756')).lstrip('.') - try: - return importlib.import_module(mname) - except ImportError: - return importlib.import_module('_me18dda184e7a3a5300b5efa2b558f756') - _me18dda184e7a3a5300b5efa2b558f756 = swig_import_helper() - del swig_import_helper -elif _swig_python_version_info >= (2, 6, 0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_me18dda184e7a3a5300b5efa2b558f756', [dirname(__file__)]) - except ImportError: - import _me18dda184e7a3a5300b5efa2b558f756 - return _me18dda184e7a3a5300b5efa2b558f756 - try: - _mod = imp.load_module('_me18dda184e7a3a5300b5efa2b558f756', fp, pathname, description) - finally: - if fp is not None: - fp.close() - return _mod - _me18dda184e7a3a5300b5efa2b558f756 = swig_import_helper() - del swig_import_helper -else: - import _me18dda184e7a3a5300b5efa2b558f756 -del _swig_python_version_info - -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. - -try: - import builtins as __builtin__ -except ImportError: - import __builtin__ - -def _swig_setattr_nondynamic(self, class_type, name, value, static=1): - if (name == "thisown"): - return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name, None) - if method: - return method(self, value) - if (not static): - if _newclass: - object.__setattr__(self, name, value) - else: - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - - -def _swig_setattr(self, class_type, name, value): - return _swig_setattr_nondynamic(self, class_type, name, value, 0) - - -def _swig_getattr(self, class_type, name): - if (name == "thisown"): - return self.this.own() - method = class_type.__swig_getmethods__.get(name, None) - if method: - return method(self) - raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) - - -def _swig_repr(self): - try: - strthis = "proxy of " + self.this.__repr__() - except __builtin__.Exception: - strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except __builtin__.Exception: - class _object: - pass - _newclass = 0 - -class SwigPyIterator(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _me18dda184e7a3a5300b5efa2b558f756.delete_SwigPyIterator - __del__ = lambda self: None - - def value(self): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_value(self) - - def incr(self, n=1): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_incr(self, n) - - def decr(self, n=1): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_decr(self, n) - - def distance(self, x): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_distance(self, x) - - def equal(self, x): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_equal(self, x) - - def copy(self): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_copy(self) - - def next(self): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_next(self) - - def __next__(self): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___next__(self) - - def previous(self): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_previous(self) - - def advance(self, n): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_advance(self, n) - - def __eq__(self, x): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___eq__(self, x) - - def __ne__(self, x): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___ne__(self, x) - - def __iadd__(self, n): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___iadd__(self, n) - - def __isub__(self, n): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___isub__(self, n) - - def __add__(self, n): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___add__(self, n) - - def __sub__(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator___sub__(self, *args) - def __iter__(self): - return self -SwigPyIterator_swigregister = _me18dda184e7a3a5300b5efa2b558f756.SwigPyIterator_swigregister -SwigPyIterator_swigregister(SwigPyIterator) - - -def _swig_getattr(self,class_type,name): - if (name == "thisown"): return self.this.own() - method = class_type.__swig_getmethods__.get(name,None) - if method: return method(self) - all_keys = [attr for attr in dir(class_type) if not attr.startswith('__')and attr != '_s' ] - data_keys = sorted(class_type.__swig_setmethods__.keys()) - method_keys = [ x for x in all_keys if x not in data_keys ] - raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % - (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) - -def _swig_setattr_nondynamic(self,class_type,name,value,static=1): - if (name == "thisown"): return self.this.own(value) - if (name == "this"): -# this line is changed to handle older swigs that used PySwigObject instead of the current SwigPyObject - if type(value).__name__ == 'SwigPyObject' or type(value).__name__ == 'PySwigObject' : - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name,None) - if method: return method(self,value) - if (not static) or hasattr(self,name): - self.__dict__[name] = value - else: - all_keys = [attr for attr in dir(class_type) if not attr.startswith('__') and attr != '_s' ] - data_keys = sorted(class_type.__swig_setmethods__.keys()) - method_keys = [ x for x in all_keys if x not in data_keys ] - raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % - (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) - -def _swig_setattr(self,class_type,name,value): - return _swig_setattr_nondynamic(self,class_type,name,value,1) - -class BODY(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, BODY, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, BODY, name) - __repr__ = _swig_repr - - def __init__(self, **kwargs): - import _sim_services - this = _me18dda184e7a3a5300b5efa2b558f756.new_BODY() - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "BODY", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - __swig_destroy__ = _me18dda184e7a3a5300b5efa2b558f756.delete_BODY - __del__ = lambda self: None - __swig_setmethods__["POS_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_set - __swig_getmethods__["POS_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_get - if _newclass: - POS_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_INIT_set) - __swig_setmethods__["VEL_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_set - __swig_getmethods__["VEL_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_get - if _newclass: - VEL_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_VEL_INIT_set) - __swig_setmethods__["ANGLE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_set - __swig_getmethods__["ANGLE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_get - if _newclass: - ANGLE_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_ANGLE_INIT_set) - __swig_setmethods__["OMEGA_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_set - __swig_getmethods__["OMEGA_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_get - if _newclass: - OMEGA_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_OMEGA_INIT_set) - __swig_setmethods__["pos"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_pos_set - __swig_getmethods__["pos"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_pos_get - if _newclass: - pos = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_pos_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_pos_set) - __swig_setmethods__["vel"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vel_set - __swig_getmethods__["vel"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vel_get - if _newclass: - vel = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_vel_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_vel_set) - __swig_setmethods__["angle"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_set - __swig_getmethods__["angle"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_get - if _newclass: - angle = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_angle_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_set) - __swig_setmethods__["omega"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omega_set - __swig_getmethods__["omega"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omega_get - if _newclass: - omega = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_omega_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_omega_set) - __swig_setmethods__["acc"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_acc_set - __swig_getmethods__["acc"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_acc_get - if _newclass: - acc = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_acc_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_acc_set) - __swig_setmethods__["omegaDot"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_set - __swig_getmethods__["omegaDot"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_get - if _newclass: - omegaDot = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_omegaDot_set) - __swig_setmethods__["force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_set - __swig_getmethods__["force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_get - if _newclass: - force = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_force_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_force_set) - __swig_setmethods__["FORCE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_set - __swig_getmethods__["FORCE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_get - if _newclass: - FORCE_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_FORCE_INIT_set) - __swig_setmethods__["force_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_set - __swig_getmethods__["force_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_get - if _newclass: - force_remain = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_force_remain_set) - __swig_setmethods__["POS_FORCE"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_set - __swig_getmethods__["POS_FORCE"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_get - if _newclass: - POS_FORCE = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_POS_FORCE_set) - __swig_setmethods__["torque"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_set - __swig_getmethods__["torque"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_get - if _newclass: - torque = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_torque_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_set) - __swig_setmethods__["TORQUE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_set - __swig_getmethods__["TORQUE_INIT"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_get - if _newclass: - TORQUE_INIT = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_TORQUE_INIT_set) - __swig_setmethods__["torque_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_set - __swig_getmethods__["torque_remain"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_get - if _newclass: - torque_remain = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_torque_remain_set) - __swig_setmethods__["inertia"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_set - __swig_getmethods__["inertia"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_get - if _newclass: - inertia = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_set) - __swig_setmethods__["inertia_matrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_set - __swig_getmethods__["inertia_matrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_get - if _newclass: - inertia_matrix = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_inertia_matrix_set) - __swig_setmethods__["radius"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_radius_set - __swig_getmethods__["radius"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_radius_get - if _newclass: - radius = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_radius_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_radius_set) - __swig_setmethods__["mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_set - __swig_getmethods__["mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_get - if _newclass: - mass = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_mass_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_set) - __swig_setmethods__["mat_mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_set - __swig_getmethods__["mat_mass"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_get - if _newclass: - mat_mass = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_mat_mass_set) - __swig_setmethods__["massmatrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_set - __swig_getmethods__["massmatrix"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_get - if _newclass: - massmatrix = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_massmatrix_set) - __swig_setmethods__["CM"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_set - __swig_getmethods__["CM"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_get - if _newclass: - CM = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_CM_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_set) - __swig_setmethods__["CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_set - __swig_getmethods__["CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_get - if _newclass: - CM_skew = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_CM_skew_set) - __swig_setmethods__["m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_set - __swig_getmethods__["m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_get - if _newclass: - m_CM_skew = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_m_CM_skew_set) - __swig_setmethods__["neg_m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_set - __swig_getmethods__["neg_m_CM_skew"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_get - if _newclass: - neg_m_CM_skew = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_neg_m_CM_skew_set) - __swig_setmethods__["vec_a"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_set - __swig_getmethods__["vec_a"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_get - if _newclass: - vec_a = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_a_set) - __swig_setmethods__["vec_b"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_set - __swig_getmethods__["vec_b"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_get - if _newclass: - vec_b = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_vec_b_set) - __swig_setmethods__["rotate"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_set - __swig_getmethods__["rotate"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_get - if _newclass: - rotate = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_rotate_set) - __swig_setmethods__["angle_force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_set - __swig_getmethods__["angle_force"] = _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_get - if _newclass: - angle_force = _swig_property(_me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_get, _me18dda184e7a3a5300b5efa2b558f756.BODY_angle_force_set) - - def default_data(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_default_data(self, *args) - - def init(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_init(self, *args) - - def derivative(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_derivative(self, *args) - - def integ(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_integ(self, *args) - - def mass_matrix(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_mass_matrix(self, *args) - - def rotation_matrix(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_rotation_matrix(self, *args) - - def calcforce(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_calcforce(self, *args) - - def calctorque(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_calctorque(self, *args) - - def calcforce_remain(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_calcforce_remain(self, *args) - - def calctorque_remain(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_calctorque_remain(self, *args) - - def eq_setup(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_eq_setup(self, *args) - - def eq_solver(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY_eq_solver(self, *args) - - def __getitem__(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY___getitem__(self, *args) - - def __len__(self, *args): - return _me18dda184e7a3a5300b5efa2b558f756.BODY___len__(self, *args) -BODY_swigregister = _me18dda184e7a3a5300b5efa2b558f756.BODY_swigregister -BODY_swigregister(BODY) - - -def castAsBODY(*args): - return _me18dda184e7a3a5300b5efa2b558f756.castAsBODY(*args) -castAsBODY = _me18dda184e7a3a5300b5efa2b558f756.castAsBODY -# This file is compatible with both classic and new-style classes. - - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py b/trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py deleted file mode 100644 index 7bd36f0d3..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/shortcuts.py +++ /dev/null @@ -1,138 +0,0 @@ - -""" -Create shortcuts or aliases for difficult to remember Input File commands - -Then use "trick.shortcut_name()" in the input file to make your calls -""" - -import top -import sys -import trick - -# from the executive -if hasattr(top.cvar, 'trick_sys'): - stop = top.cvar.trick_sys.sched.stop - run = top.cvar.trick_sys.sched.run - freeze = top.cvar.trick_sys.sched.freeze - if hasattr(top.cvar.trick_sys.sched, 'add_range'): - # from monte carlo - mc_add_range = top.cvar.trick_sys.sched.add_range - -# from Monte Carlo -if hasattr(top.cvar, 'trick_mc'): - mc_add_variable = top.cvar.trick_mc.mc.add_variable - -# from the memory manager wrapper -if hasattr(top.cvar, 'trick_mm'): - read_checkpoint_from_string = top.cvar.trick_mm.mm.read_checkpoint_from_string - mm_declare_ext_var = top.cvar.trick_mm.mm.declare_extern_var - -# from message -if hasattr(top.cvar, 'trick_message'): - message_cpu_set = top.cvar.trick_message.mdevice.get_listen_thread().cpu_set - -# from checkpoint restart -if hasattr(top.cvar, 'trick_cpr'): - checkpoint = top.cvar.trick_cpr.cpr.checkpoint - load_checkpoint = top.cvar.trick_cpr.cpr.load_checkpoint - -# from the input processor -if hasattr(top.cvar, 'trick_ip'): - #set_event_info_msg_on = top.cvar.trick_ip.ip.set_event_info_msg_on - #set_event_info_msg_off = top.cvar.trick_ip.ip.set_event_info_msg_off - pass - -set_event_info_msg_on = trick.IPPythonEvent.set_event_info_msg_on -set_event_info_msg_off = trick.IPPythonEvent.set_event_info_msg_off -terminate_on_event_parse_error = trick.IPPythonEvent.terminate_on_event_parse_error - -# bind pyton input_processor event routines to shortcut names. -new_event = trick.ippython_new_event -add_event = trick.ippython_add_event -add_event_before = trick.ippython_add_event_before -add_event_after = trick.ippython_add_event_after -add_read = trick.ippython_add_read -delete_event = trick.ippython_delete_event -manual_on = trick.ippython_manual_on -manual_fire = trick.ippython_manual_fire -manual_off = trick.ippython_manual_off -manual_done = trick.ippython_manual_done - -# bind event manager name to shortcut names. -get_event = trick.event_manager_get_event -remove_event = trick.event_manager_remove_event - -if hasattr(top.cvar, 'trick_em'): - activate_event = top.cvar.trick_em.em.activate_event - deactivate_event = top.cvar.trick_em.em.deactivate_event - -# from real time -if hasattr(top.cvar, 'trick_real_time'): - itimer_enable = top.cvar.trick_real_time.itimer.enable - itimer_disable = top.cvar.trick_real_time.itimer.disable - -# from variable server / sim_control panel -if hasattr(top.cvar, 'trick_vs'): - set_var_server_enabled = top.cvar.trick_vs.vs.set_enabled - get_var_server_enabled = top.cvar.trick_vs.vs.get_enabled - set_var_server_info_msg_on = top.cvar.trick_vs.vs.set_var_server_info_msg_on - set_var_server_info_msg_off = top.cvar.trick_vs.vs.set_var_server_info_msg_off - set_var_server_log_on = top.cvar.trick_vs.vs.set_var_server_log_on - set_var_server_log_off = top.cvar.trick_vs.vs.set_var_server_log_off - var_server_cpu_set = top.cvar.trick_vs.vs.get_listen_thread().cpu_set - - # Send all output to stdout/stderr through var_write_stdio. - class VarWriteStdio: - def __init__(self, in_stream): - self.stream = in_stream - def write(self, text): - trick.var_write_stdio(self.stream.fileno() , text) - def flush(self): - self.stream.flush() - sys.stdout = VarWriteStdio(sys.stdout) - sys.stderr = VarWriteStdio(sys.stderr) - -# from real time injector -if hasattr(top.cvar, 'trick_inject'): - rti_set_debug = top.cvar.trick_inject.rtis.SetDebug - rti_set_frame_multiple = top.cvar.trick_inject.rtis.SetFrameMultiple - rti_set_frame_offset = top.cvar.trick_inject.rtis.SetFrameOffset - rti_add = top.cvar.trick_inject.rtis.Add - rti_fire = top.cvar.trick_inject.rtis.Fire - rti_list = top.cvar.trick_inject.rtis.List - -# from data_recording -if hasattr(top.cvar, 'trick_data_record'): - drd_writer_thread = top.cvar.trick_data_record.drd.drd_writer_thread - data_record_cpu_set = top.cvar.trick_data_record.drd.drd_writer_thread.cpu_set - -# This routine will look up the reference name through ref_attributes. -# ref_to_value retrieves the value and places it into a V_DATA structure -# The return statement is an anonymous dictionary lookup that returns -# the value based on the type in val. The 6 argument is a default -# type to use -def var_get(name): - ref = trick.ref_attributes(name) - ref.thisown = True - val = trick.V_DATA() - trick.ref_to_value(ref, val) - return { - '1': trick.vval_char(val), - '2': trick.vval_char(val), - '3': trick.vval_string(val), - '4': trick.vval_short(val), - '5': trick.vval_short(val), - '6': trick.vval_int(val), - '7': trick.vval_int(val), - '8': trick.vval_long(val), - '9': trick.vval_long(val), - '10': trick.vval_float(val), - '11': trick.vval_double(val), - '14': trick.vval_longlong(val), - '15': trick.vval_longlong(val), - '16': trick.vval_filep(val), - '17': trick.vval_char(val), - '20': trick.vval_voidp(val), - '21': trick.vval_int(val) - }.get(str(val.type),6) - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py b/trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py deleted file mode 100644 index ae60cf201..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/sim_services.py +++ /dev/null @@ -1,13728 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.12 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. - -from sys import version_info as _swig_python_version_info -if _swig_python_version_info >= (2, 7, 0): - def swig_import_helper(): - import importlib - pkg = __name__.rpartition('.')[0] - mname = '.'.join((pkg, '_sim_services')).lstrip('.') - try: - return importlib.import_module(mname) - except ImportError: - return importlib.import_module('_sim_services') - _sim_services = swig_import_helper() - del swig_import_helper -elif _swig_python_version_info >= (2, 6, 0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_sim_services', [dirname(__file__)]) - except ImportError: - import _sim_services - return _sim_services - try: - _mod = imp.load_module('_sim_services', fp, pathname, description) - finally: - if fp is not None: - fp.close() - return _mod - _sim_services = swig_import_helper() - del swig_import_helper -else: - import _sim_services -del _swig_python_version_info - -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. - -try: - import builtins as __builtin__ -except ImportError: - import __builtin__ - -def _swig_setattr_nondynamic(self, class_type, name, value, static=1): - if (name == "thisown"): - return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name, None) - if method: - return method(self, value) - if (not static): - if _newclass: - object.__setattr__(self, name, value) - else: - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - - -def _swig_setattr(self, class_type, name, value): - return _swig_setattr_nondynamic(self, class_type, name, value, 0) - - -def _swig_getattr(self, class_type, name): - if (name == "thisown"): - return self.this.own() - method = class_type.__swig_getmethods__.get(name, None) - if method: - return method(self) - raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) - - -def _swig_repr(self): - try: - strthis = "proxy of " + self.this.__repr__() - except __builtin__.Exception: - strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except __builtin__.Exception: - class _object: - pass - _newclass = 0 - -class SwigPyIterator(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SwigPyIterator, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SwigPyIterator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_SwigPyIterator - __del__ = lambda self: None - - def value(self): - return _sim_services.SwigPyIterator_value(self) - - def incr(self, n=1): - return _sim_services.SwigPyIterator_incr(self, n) - - def decr(self, n=1): - return _sim_services.SwigPyIterator_decr(self, n) - - def distance(self, x): - return _sim_services.SwigPyIterator_distance(self, x) - - def equal(self, x): - return _sim_services.SwigPyIterator_equal(self, x) - - def copy(self): - return _sim_services.SwigPyIterator_copy(self) - - def next(self): - return _sim_services.SwigPyIterator_next(self) - - def __next__(self): - return _sim_services.SwigPyIterator___next__(self) - - def previous(self): - return _sim_services.SwigPyIterator_previous(self) - - def advance(self, n): - return _sim_services.SwigPyIterator_advance(self, n) - - def __eq__(self, x): - return _sim_services.SwigPyIterator___eq__(self, x) - - def __ne__(self, x): - return _sim_services.SwigPyIterator___ne__(self, x) - - def __iadd__(self, n): - return _sim_services.SwigPyIterator___iadd__(self, n) - - def __isub__(self, n): - return _sim_services.SwigPyIterator___isub__(self, n) - - def __add__(self, n): - return _sim_services.SwigPyIterator___add__(self, n) - - def __sub__(self, *args): - return _sim_services.SwigPyIterator___sub__(self, *args) - def __iter__(self): - return self -SwigPyIterator_swigregister = _sim_services.SwigPyIterator_swigregister -SwigPyIterator_swigregister(SwigPyIterator) - - -def _swig_getattr(self,class_type,name): - if (name == "thisown"): return self.this.own() - method = class_type.__swig_getmethods__.get(name,None) - if method: return method(self) - all_keys = [attr for attr in dir(class_type) if not attr.startswith('__')and attr != '_s' ] - data_keys = sorted(class_type.__swig_setmethods__.keys()) - method_keys = [ x for x in all_keys if x not in data_keys ] - raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % - (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) - -def _swig_setattr_nondynamic(self,class_type,name,value,static=1): - if (name == "thisown"): return self.this.own(value) - if (name == "this"): -# this line is changed to handle older swigs that used PySwigObject instead of the current SwigPyObject - if type(value).__name__ == 'SwigPyObject' or type(value).__name__ == 'PySwigObject' : - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name,None) - if method: return method(self,value) - if (not static) or hasattr(self,name): - self.__dict__[name] = value - else: - all_keys = [attr for attr in dir(class_type) if not attr.startswith('__') and attr != '_s' ] - data_keys = sorted(class_type.__swig_setmethods__.keys()) - method_keys = [ x for x in all_keys if x not in data_keys ] - raise AttributeError("Type %s does not contain member %s.\n%s data = %s\n%s methods = %s" % - (self.__class__.__name__,name,self.__class__.__name__,data_keys,self.__class__.__name__,method_keys)) - -def _swig_setattr(self,class_type,name,value): - return _swig_setattr_nondynamic(self,class_type,name,value,1) - -class swig_double(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, swig_double, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, swig_double, name) - __swig_setmethods__["value"] = _sim_services.swig_double_value_set - __swig_getmethods__["value"] = _sim_services.swig_double_value_get - if _newclass: - value = _swig_property(_sim_services.swig_double_value_get, _sim_services.swig_double_value_set) - __swig_setmethods__["units"] = _sim_services.swig_double_units_set - __swig_getmethods__["units"] = _sim_services.swig_double_units_get - if _newclass: - units = _swig_property(_sim_services.swig_double_units_get, _sim_services.swig_double_units_set) - __swig_setmethods__["str_output"] = _sim_services.swig_double_str_output_set - __swig_getmethods__["str_output"] = _sim_services.swig_double_str_output_get - if _newclass: - str_output = _swig_property(_sim_services.swig_double_str_output_get, _sim_services.swig_double_str_output_set) - - def __init__(self, *args): - this = _sim_services.new_swig_double(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def __str__(self, *args): - return _sim_services.swig_double___str__(self, *args) - - def __repr__(self, *args): - return _sim_services.swig_double___repr__(self, *args) - - def __add__(self, *args): - return _sim_services.swig_double___add__(self, *args) - - def __sub__(self, *args): - return _sim_services.swig_double___sub__(self, *args) - - def __mul__(self, *args): - return _sim_services.swig_double___mul__(self, *args) - - def __div__(self, *args): - return _sim_services.swig_double___div__(self, *args) - - def __truediv__(self, *args): - return _sim_services.swig_double___truediv__(self, *args) - - def __floordiv__(self, *args): - return _sim_services.swig_double___floordiv__(self, *args) - - def __mod__(self, *args): - return _sim_services.swig_double___mod__(self, *args) - - def __pow__(self, *args): - return _sim_services.swig_double___pow__(self, *args) - - def __radd__(self, *args): - return _sim_services.swig_double___radd__(self, *args) - - def __rsub__(self, *args): - return _sim_services.swig_double___rsub__(self, *args) - - def __rmul__(self, *args): - return _sim_services.swig_double___rmul__(self, *args) - - def __rdiv__(self, *args): - return _sim_services.swig_double___rdiv__(self, *args) - - def __rtruediv__(self, *args): - return _sim_services.swig_double___rtruediv__(self, *args) - - def __rfloordiv__(self, *args): - return _sim_services.swig_double___rfloordiv__(self, *args) - - def __rmod__(self, *args): - return _sim_services.swig_double___rmod__(self, *args) - - def __rpow__(self, *args): - return _sim_services.swig_double___rpow__(self, *args) - - def __iadd__(self, *args): - return _sim_services.swig_double___iadd__(self, *args) - - def __isub__(self, *args): - return _sim_services.swig_double___isub__(self, *args) - - def __imul__(self, *args): - return _sim_services.swig_double___imul__(self, *args) - - def __idiv__(self, *args): - return _sim_services.swig_double___idiv__(self, *args) - - def __itruediv__(self, *args): - return _sim_services.swig_double___itruediv__(self, *args) - - def __ifloordiv__(self, *args): - return _sim_services.swig_double___ifloordiv__(self, *args) - - def __imod__(self, *args): - return _sim_services.swig_double___imod__(self, *args) - - def __ipow__(self, *args): - return _sim_services.swig_double___ipow__(self, *args) - - def __lt__(self, *args): - return _sim_services.swig_double___lt__(self, *args) - - def __le__(self, *args): - return _sim_services.swig_double___le__(self, *args) - - def __eq__(self, *args): - return _sim_services.swig_double___eq__(self, *args) - - def __ne__(self, *args): - return _sim_services.swig_double___ne__(self, *args) - - def __gt__(self, *args): - return _sim_services.swig_double___gt__(self, *args) - - def __ge__(self, *args): - return _sim_services.swig_double___ge__(self, *args) - - def __neg__(self, *args): - return _sim_services.swig_double___neg__(self, *args) - - def __pos__(self, *args): - return _sim_services.swig_double___pos__(self, *args) - - def __abs__(self, *args): - return _sim_services.swig_double___abs__(self, *args) - - def __int__(self, *args): - return _sim_services.swig_double___int__(self, *args) - - def __long__(self, *args): - return _sim_services.swig_double___long__(self, *args) - - def __float__(self, *args): - return _sim_services.swig_double___float__(self, *args) - - def __len__(self, *args): - return _sim_services.swig_double___len__(self, *args) - __swig_destroy__ = _sim_services.delete_swig_double - __del__ = lambda self: None -swig_double_swigregister = _sim_services.swig_double_swigregister -swig_double_swigregister(swig_double) -cvar = _sim_services.cvar - - -def map_trick_units_to_udunits(*args): - return _sim_services.map_trick_units_to_udunits(*args) -map_trick_units_to_udunits = _sim_services.map_trick_units_to_udunits -class InputProcessor(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, InputProcessor, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, InputProcessor, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_setmethods__["verify_input"] = _sim_services.InputProcessor_verify_input_set - __swig_getmethods__["verify_input"] = _sim_services.InputProcessor_verify_input_get - if _newclass: - verify_input = _swig_property(_sim_services.InputProcessor_verify_input_get, _sim_services.InputProcessor_verify_input_set) - __swig_setmethods__["input_file"] = _sim_services.InputProcessor_input_file_set - __swig_getmethods__["input_file"] = _sim_services.InputProcessor_input_file_get - if _newclass: - input_file = _swig_property(_sim_services.InputProcessor_input_file_get, _sim_services.InputProcessor_input_file_set) - __swig_destroy__ = _sim_services.delete_InputProcessor - __del__ = lambda self: None - - def process_sim_args(self, *args): - return _sim_services.InputProcessor_process_sim_args(self, *args) - - def parse(self, *args): - return _sim_services.InputProcessor_parse(self, *args) - - def shutdown(self, *args): - return _sim_services.InputProcessor_shutdown(self, *args) -InputProcessor_swigregister = _sim_services.InputProcessor_swigregister -InputProcessor_swigregister(InputProcessor) - -class IPPython(InputProcessor): - __swig_setmethods__ = {} - for _s in [InputProcessor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, IPPython, name, value) - __swig_getmethods__ = {} - for _s in [InputProcessor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, IPPython, name) - __repr__ = _swig_repr - __swig_setmethods__["return_val"] = _sim_services.IPPython_return_val_set - __swig_getmethods__["return_val"] = _sim_services.IPPython_return_val_get - if _newclass: - return_val = _swig_property(_sim_services.IPPython_return_val_get, _sim_services.IPPython_return_val_set) - __swig_setmethods__["ip_mutex"] = _sim_services.IPPython_ip_mutex_set - __swig_getmethods__["ip_mutex"] = _sim_services.IPPython_ip_mutex_get - if _newclass: - ip_mutex = _swig_property(_sim_services.IPPython_ip_mutex_get, _sim_services.IPPython_ip_mutex_set) - - def __init__(self, *args): - this = _sim_services.new_IPPython(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def get_TMM_named_variables(self, *args): - return _sim_services.IPPython_get_TMM_named_variables(self, *args) - - def get_units_conversion_msgs(self, *args): - return _sim_services.IPPython_get_units_conversion_msgs(self, *args) - - def shoot_the_units_conversion_messenger(self, *args): - return _sim_services.IPPython_shoot_the_units_conversion_messenger(self, *args) - - def init(self, *args): - return _sim_services.IPPython_init(self, *args) - - def shutdown(self, *args): - return _sim_services.IPPython_shutdown(self, *args) - - def parse(self, *args): - return _sim_services.IPPython_parse(self, *args) - - def parse_condition(self, *args): - return _sim_services.IPPython_parse_condition(self, *args) - - def restart(self, *args): - return _sim_services.IPPython_restart(self, *args) - __swig_destroy__ = _sim_services.delete_IPPython - __del__ = lambda self: None -IPPython_swigregister = _sim_services.IPPython_swigregister -IPPython_swigregister(IPPython) - - -def init_swig_modules(*args): - return _sim_services.init_swig_modules(*args) -init_swig_modules = _sim_services.init_swig_modules - -def shoot_the_units_conversion_messenger(*args): - return _sim_services.shoot_the_units_conversion_messenger(*args) -shoot_the_units_conversion_messenger = _sim_services.shoot_the_units_conversion_messenger - -def revive_the_units_conversion_messenger(*args): - return _sim_services.revive_the_units_conversion_messenger(*args) -revive_the_units_conversion_messenger = _sim_services.revive_the_units_conversion_messenger - -def check_units_conversion_messenger_for_signs_of_life(*args): - return _sim_services.check_units_conversion_messenger_for_signs_of_life(*args) -check_units_conversion_messenger_for_signs_of_life = _sim_services.check_units_conversion_messenger_for_signs_of_life - -def attach_units(*args): - return _sim_services.attach_units(*args) -attach_units = _sim_services.attach_units - -def wrap_ptr(*args): - return _sim_services.wrap_ptr(*args) -wrap_ptr = _sim_services.wrap_ptr - -def unhex_double(*args): - return _sim_services.unhex_double(*args) -unhex_double = _sim_services.unhex_double - -def unhex_float(*args): - return _sim_services.unhex_float(*args) -unhex_float = _sim_services.unhex_float - -def new_cvar_list(*args): - return _sim_services.new_cvar_list(*args) -new_cvar_list = _sim_services.new_cvar_list - -def combine_cvars(*args): - return _sim_services.combine_cvars(*args) -combine_cvars = _sim_services.combine_cvars -Roll_Pitch_Yaw = _sim_services.Roll_Pitch_Yaw -Roll_Yaw_Pitch = _sim_services.Roll_Yaw_Pitch -Pitch_Yaw_Roll = _sim_services.Pitch_Yaw_Roll -Pitch_Roll_Yaw = _sim_services.Pitch_Roll_Yaw -Yaw_Roll_Pitch = _sim_services.Yaw_Roll_Pitch -Yaw_Pitch_Roll = _sim_services.Yaw_Pitch_Roll -class TRANSFORM(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TRANSFORM, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TRANSFORM, name) - __repr__ = _swig_repr - __swig_setmethods__["euler_sequence"] = _sim_services.TRANSFORM_euler_sequence_set - __swig_getmethods__["euler_sequence"] = _sim_services.TRANSFORM_euler_sequence_get - if _newclass: - euler_sequence = _swig_property(_sim_services.TRANSFORM_euler_sequence_get, _sim_services.TRANSFORM_euler_sequence_set) - __swig_setmethods__["euler_angles"] = _sim_services.TRANSFORM_euler_angles_set - __swig_getmethods__["euler_angles"] = _sim_services.TRANSFORM_euler_angles_get - if _newclass: - euler_angles = _swig_property(_sim_services.TRANSFORM_euler_angles_get, _sim_services.TRANSFORM_euler_angles_set) - __swig_setmethods__["location"] = _sim_services.TRANSFORM_location_set - __swig_getmethods__["location"] = _sim_services.TRANSFORM_location_get - if _newclass: - location = _swig_property(_sim_services.TRANSFORM_location_get, _sim_services.TRANSFORM_location_set) - - def __init__(self): - this = _sim_services.new_TRANSFORM() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TRANSFORM - __del__ = lambda self: None -TRANSFORM_swigregister = _sim_services.TRANSFORM_swigregister -TRANSFORM_swigregister(TRANSFORM) - -UNIFORM_RND_1 = _sim_services.UNIFORM_RND_1 -UNIFORM_RND_TRIPLE = _sim_services.UNIFORM_RND_TRIPLE -GAUSS_RND_PSEUDO = _sim_services.GAUSS_RND_PSEUDO -GAUSS_RND_BELL = _sim_services.GAUSS_RND_BELL -RND_NUM_1 = _sim_services.RND_NUM_1 -LCG1 = _sim_services.LCG1 -TRIPLE = _sim_services.TRIPLE -class RAND_GENERATOR(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RAND_GENERATOR, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RAND_GENERATOR, name) - __repr__ = _swig_repr - __swig_setmethods__["option"] = _sim_services.RAND_GENERATOR_option_set - __swig_getmethods__["option"] = _sim_services.RAND_GENERATOR_option_get - if _newclass: - option = _swig_property(_sim_services.RAND_GENERATOR_option_get, _sim_services.RAND_GENERATOR_option_set) - __swig_setmethods__["uniform"] = _sim_services.RAND_GENERATOR_uniform_set - __swig_getmethods__["uniform"] = _sim_services.RAND_GENERATOR_uniform_get - if _newclass: - uniform = _swig_property(_sim_services.RAND_GENERATOR_uniform_get, _sim_services.RAND_GENERATOR_uniform_set) - __swig_setmethods__["seed_1"] = _sim_services.RAND_GENERATOR_seed_1_set - __swig_getmethods__["seed_1"] = _sim_services.RAND_GENERATOR_seed_1_get - if _newclass: - seed_1 = _swig_property(_sim_services.RAND_GENERATOR_seed_1_get, _sim_services.RAND_GENERATOR_seed_1_set) - __swig_setmethods__["seed_trpl"] = _sim_services.RAND_GENERATOR_seed_trpl_set - __swig_getmethods__["seed_trpl"] = _sim_services.RAND_GENERATOR_seed_trpl_get - if _newclass: - seed_trpl = _swig_property(_sim_services.RAND_GENERATOR_seed_trpl_get, _sim_services.RAND_GENERATOR_seed_trpl_set) - __swig_setmethods__["iff"] = _sim_services.RAND_GENERATOR_iff_set - __swig_getmethods__["iff"] = _sim_services.RAND_GENERATOR_iff_get - if _newclass: - iff = _swig_property(_sim_services.RAND_GENERATOR_iff_get, _sim_services.RAND_GENERATOR_iff_set) - __swig_setmethods__["table"] = _sim_services.RAND_GENERATOR_table_set - __swig_getmethods__["table"] = _sim_services.RAND_GENERATOR_table_get - if _newclass: - table = _swig_property(_sim_services.RAND_GENERATOR_table_get, _sim_services.RAND_GENERATOR_table_set) - __swig_setmethods__["sigma_range"] = _sim_services.RAND_GENERATOR_sigma_range_set - __swig_getmethods__["sigma_range"] = _sim_services.RAND_GENERATOR_sigma_range_get - if _newclass: - sigma_range = _swig_property(_sim_services.RAND_GENERATOR_sigma_range_get, _sim_services.RAND_GENERATOR_sigma_range_set) - __swig_setmethods__["ix1"] = _sim_services.RAND_GENERATOR_ix1_set - __swig_getmethods__["ix1"] = _sim_services.RAND_GENERATOR_ix1_get - if _newclass: - ix1 = _swig_property(_sim_services.RAND_GENERATOR_ix1_get, _sim_services.RAND_GENERATOR_ix1_set) - __swig_setmethods__["ix2"] = _sim_services.RAND_GENERATOR_ix2_set - __swig_getmethods__["ix2"] = _sim_services.RAND_GENERATOR_ix2_get - if _newclass: - ix2 = _swig_property(_sim_services.RAND_GENERATOR_ix2_get, _sim_services.RAND_GENERATOR_ix2_set) - __swig_setmethods__["ix3"] = _sim_services.RAND_GENERATOR_ix3_set - __swig_getmethods__["ix3"] = _sim_services.RAND_GENERATOR_ix3_get - if _newclass: - ix3 = _swig_property(_sim_services.RAND_GENERATOR_ix3_get, _sim_services.RAND_GENERATOR_ix3_set) - - def __init__(self): - this = _sim_services.new_RAND_GENERATOR() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RAND_GENERATOR - __del__ = lambda self: None -RAND_GENERATOR_swigregister = _sim_services.RAND_GENERATOR_swigregister -RAND_GENERATOR_swigregister(RAND_GENERATOR) - -TRICK_GSL_GAUSS = _sim_services.TRICK_GSL_GAUSS -TRICK_GSL_FLAT = _sim_services.TRICK_GSL_FLAT -TRICK_GSL_POISSON = _sim_services.TRICK_GSL_POISSON -class TRICK_GSL_RANDIST(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TRICK_GSL_RANDIST, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TRICK_GSL_RANDIST, name) - __repr__ = _swig_repr - __swig_setmethods__["rng"] = _sim_services.TRICK_GSL_RANDIST_rng_set - __swig_getmethods__["rng"] = _sim_services.TRICK_GSL_RANDIST_rng_get - if _newclass: - rng = _swig_property(_sim_services.TRICK_GSL_RANDIST_rng_get, _sim_services.TRICK_GSL_RANDIST_rng_set) - __swig_setmethods__["type"] = _sim_services.TRICK_GSL_RANDIST_type_set - __swig_getmethods__["type"] = _sim_services.TRICK_GSL_RANDIST_type_get - if _newclass: - type = _swig_property(_sim_services.TRICK_GSL_RANDIST_type_get, _sim_services.TRICK_GSL_RANDIST_type_set) - __swig_setmethods__["seed"] = _sim_services.TRICK_GSL_RANDIST_seed_set - __swig_getmethods__["seed"] = _sim_services.TRICK_GSL_RANDIST_seed_get - if _newclass: - seed = _swig_property(_sim_services.TRICK_GSL_RANDIST_seed_get, _sim_services.TRICK_GSL_RANDIST_seed_set) - __swig_setmethods__["sigma"] = _sim_services.TRICK_GSL_RANDIST_sigma_set - __swig_getmethods__["sigma"] = _sim_services.TRICK_GSL_RANDIST_sigma_get - if _newclass: - sigma = _swig_property(_sim_services.TRICK_GSL_RANDIST_sigma_get, _sim_services.TRICK_GSL_RANDIST_sigma_set) - __swig_setmethods__["mu"] = _sim_services.TRICK_GSL_RANDIST_mu_set - __swig_getmethods__["mu"] = _sim_services.TRICK_GSL_RANDIST_mu_get - if _newclass: - mu = _swig_property(_sim_services.TRICK_GSL_RANDIST_mu_get, _sim_services.TRICK_GSL_RANDIST_mu_set) - __swig_setmethods__["min"] = _sim_services.TRICK_GSL_RANDIST_min_set - __swig_getmethods__["min"] = _sim_services.TRICK_GSL_RANDIST_min_get - if _newclass: - min = _swig_property(_sim_services.TRICK_GSL_RANDIST_min_get, _sim_services.TRICK_GSL_RANDIST_min_set) - __swig_setmethods__["max"] = _sim_services.TRICK_GSL_RANDIST_max_set - __swig_getmethods__["max"] = _sim_services.TRICK_GSL_RANDIST_max_get - if _newclass: - max = _swig_property(_sim_services.TRICK_GSL_RANDIST_max_get, _sim_services.TRICK_GSL_RANDIST_max_set) - __swig_setmethods__["rel_min"] = _sim_services.TRICK_GSL_RANDIST_rel_min_set - __swig_getmethods__["rel_min"] = _sim_services.TRICK_GSL_RANDIST_rel_min_get - if _newclass: - rel_min = _swig_property(_sim_services.TRICK_GSL_RANDIST_rel_min_get, _sim_services.TRICK_GSL_RANDIST_rel_min_set) - __swig_setmethods__["rel_max"] = _sim_services.TRICK_GSL_RANDIST_rel_max_set - __swig_getmethods__["rel_max"] = _sim_services.TRICK_GSL_RANDIST_rel_max_get - if _newclass: - rel_max = _swig_property(_sim_services.TRICK_GSL_RANDIST_rel_max_get, _sim_services.TRICK_GSL_RANDIST_rel_max_set) - __swig_setmethods__["sigma_range"] = _sim_services.TRICK_GSL_RANDIST_sigma_range_set - __swig_getmethods__["sigma_range"] = _sim_services.TRICK_GSL_RANDIST_sigma_range_get - if _newclass: - sigma_range = _swig_property(_sim_services.TRICK_GSL_RANDIST_sigma_range_get, _sim_services.TRICK_GSL_RANDIST_sigma_range_set) - __swig_setmethods__["uniform"] = _sim_services.TRICK_GSL_RANDIST_uniform_set - __swig_getmethods__["uniform"] = _sim_services.TRICK_GSL_RANDIST_uniform_get - if _newclass: - uniform = _swig_property(_sim_services.TRICK_GSL_RANDIST_uniform_get, _sim_services.TRICK_GSL_RANDIST_uniform_set) - - def __init__(self): - this = _sim_services.new_TRICK_GSL_RANDIST() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TRICK_GSL_RANDIST - __del__ = lambda self: None -TRICK_GSL_RANDIST_swigregister = _sim_services.TRICK_GSL_RANDIST_swigregister -TRICK_GSL_RANDIST_swigregister(TRICK_GSL_RANDIST) - -class TRICK_GSL_RETURN_TYPE(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TRICK_GSL_RETURN_TYPE, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TRICK_GSL_RETURN_TYPE, name) - __repr__ = _swig_repr - __swig_setmethods__["ui"] = _sim_services.TRICK_GSL_RETURN_TYPE_ui_set - __swig_getmethods__["ui"] = _sim_services.TRICK_GSL_RETURN_TYPE_ui_get - if _newclass: - ui = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_ui_get, _sim_services.TRICK_GSL_RETURN_TYPE_ui_set) - __swig_setmethods__["d"] = _sim_services.TRICK_GSL_RETURN_TYPE_d_set - __swig_getmethods__["d"] = _sim_services.TRICK_GSL_RETURN_TYPE_d_get - if _newclass: - d = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_d_get, _sim_services.TRICK_GSL_RETURN_TYPE_d_set) - __swig_setmethods__["ll"] = _sim_services.TRICK_GSL_RETURN_TYPE_ll_set - __swig_getmethods__["ll"] = _sim_services.TRICK_GSL_RETURN_TYPE_ll_get - if _newclass: - ll = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_ll_get, _sim_services.TRICK_GSL_RETURN_TYPE_ll_set) - __swig_setmethods__["ii"] = _sim_services.TRICK_GSL_RETURN_TYPE_ii_set - __swig_getmethods__["ii"] = _sim_services.TRICK_GSL_RETURN_TYPE_ii_get - if _newclass: - ii = _swig_property(_sim_services.TRICK_GSL_RETURN_TYPE_ii_get, _sim_services.TRICK_GSL_RETURN_TYPE_ii_set) - - def __init__(self): - this = _sim_services.new_TRICK_GSL_RETURN_TYPE() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TRICK_GSL_RETURN_TYPE - __del__ = lambda self: None -TRICK_GSL_RETURN_TYPE_swigregister = _sim_services.TRICK_GSL_RETURN_TYPE_swigregister -TRICK_GSL_RETURN_TYPE_swigregister(TRICK_GSL_RETURN_TYPE) - - -def trick_gsl_rand_init(*args): - return _sim_services.trick_gsl_rand_init(*args) -trick_gsl_rand_init = _sim_services.trick_gsl_rand_init - -def trick_gsl_rand_alloc(*args): - return _sim_services.trick_gsl_rand_alloc(*args) -trick_gsl_rand_alloc = _sim_services.trick_gsl_rand_alloc - -def trick_gsl_rand_seed(*args): - return _sim_services.trick_gsl_rand_seed(*args) -trick_gsl_rand_seed = _sim_services.trick_gsl_rand_seed - -def trick_gsl_rand(*args): - return _sim_services.trick_gsl_rand(*args) -trick_gsl_rand = _sim_services.trick_gsl_rand - -def trick_gsl_rand_shutdown(*args): - return _sim_services.trick_gsl_rand_shutdown(*args) -trick_gsl_rand_shutdown = _sim_services.trick_gsl_rand_shutdown -Pulse = _sim_services.Pulse -Ramp = _sim_services.Ramp -Square = _sim_services.Square -Square_Doublet = _sim_services.Square_Doublet -Triangle = _sim_services.Triangle -Triangle_Doublet = _sim_services.Triangle_Doublet -Sine = _sim_services.Sine -Noise = _sim_services.Noise -Gauss_Noise = _sim_services.Gauss_Noise -User_Wave = _sim_services.User_Wave -class WAVE_FORM(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, WAVE_FORM, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, WAVE_FORM, name) - __repr__ = _swig_repr - __swig_setmethods__["type"] = _sim_services.WAVE_FORM_type_set - __swig_getmethods__["type"] = _sim_services.WAVE_FORM_type_get - if _newclass: - type = _swig_property(_sim_services.WAVE_FORM_type_get, _sim_services.WAVE_FORM_type_set) - __swig_setmethods__["start"] = _sim_services.WAVE_FORM_start_set - __swig_getmethods__["start"] = _sim_services.WAVE_FORM_start_get - if _newclass: - start = _swig_property(_sim_services.WAVE_FORM_start_get, _sim_services.WAVE_FORM_start_set) - __swig_setmethods__["stop"] = _sim_services.WAVE_FORM_stop_set - __swig_getmethods__["stop"] = _sim_services.WAVE_FORM_stop_get - if _newclass: - stop = _swig_property(_sim_services.WAVE_FORM_stop_get, _sim_services.WAVE_FORM_stop_set) - __swig_setmethods__["ramp"] = _sim_services.WAVE_FORM_ramp_set - __swig_getmethods__["ramp"] = _sim_services.WAVE_FORM_ramp_get - if _newclass: - ramp = _swig_property(_sim_services.WAVE_FORM_ramp_get, _sim_services.WAVE_FORM_ramp_set) - __swig_setmethods__["pause"] = _sim_services.WAVE_FORM_pause_set - __swig_getmethods__["pause"] = _sim_services.WAVE_FORM_pause_get - if _newclass: - pause = _swig_property(_sim_services.WAVE_FORM_pause_get, _sim_services.WAVE_FORM_pause_set) - __swig_setmethods__["frequency"] = _sim_services.WAVE_FORM_frequency_set - __swig_getmethods__["frequency"] = _sim_services.WAVE_FORM_frequency_get - if _newclass: - frequency = _swig_property(_sim_services.WAVE_FORM_frequency_get, _sim_services.WAVE_FORM_frequency_set) - __swig_setmethods__["phase"] = _sim_services.WAVE_FORM_phase_set - __swig_getmethods__["phase"] = _sim_services.WAVE_FORM_phase_get - if _newclass: - phase = _swig_property(_sim_services.WAVE_FORM_phase_get, _sim_services.WAVE_FORM_phase_set) - __swig_setmethods__["init_random"] = _sim_services.WAVE_FORM_init_random_set - __swig_getmethods__["init_random"] = _sim_services.WAVE_FORM_init_random_get - if _newclass: - init_random = _swig_property(_sim_services.WAVE_FORM_init_random_get, _sim_services.WAVE_FORM_init_random_set) - __swig_setmethods__["random_seed"] = _sim_services.WAVE_FORM_random_seed_set - __swig_getmethods__["random_seed"] = _sim_services.WAVE_FORM_random_seed_get - if _newclass: - random_seed = _swig_property(_sim_services.WAVE_FORM_random_seed_get, _sim_services.WAVE_FORM_random_seed_set) - __swig_setmethods__["sigma_range"] = _sim_services.WAVE_FORM_sigma_range_set - __swig_getmethods__["sigma_range"] = _sim_services.WAVE_FORM_sigma_range_get - if _newclass: - sigma_range = _swig_property(_sim_services.WAVE_FORM_sigma_range_get, _sim_services.WAVE_FORM_sigma_range_set) - __swig_setmethods__["init_user_data"] = _sim_services.WAVE_FORM_init_user_data_set - __swig_getmethods__["init_user_data"] = _sim_services.WAVE_FORM_init_user_data_get - if _newclass: - init_user_data = _swig_property(_sim_services.WAVE_FORM_init_user_data_get, _sim_services.WAVE_FORM_init_user_data_set) - __swig_setmethods__["user_data"] = _sim_services.WAVE_FORM_user_data_set - __swig_getmethods__["user_data"] = _sim_services.WAVE_FORM_user_data_get - if _newclass: - user_data = _swig_property(_sim_services.WAVE_FORM_user_data_get, _sim_services.WAVE_FORM_user_data_set) - __swig_setmethods__["fp"] = _sim_services.WAVE_FORM_fp_set - __swig_getmethods__["fp"] = _sim_services.WAVE_FORM_fp_get - if _newclass: - fp = _swig_property(_sim_services.WAVE_FORM_fp_get, _sim_services.WAVE_FORM_fp_set) - __swig_setmethods__["next_time"] = _sim_services.WAVE_FORM_next_time_set - __swig_getmethods__["next_time"] = _sim_services.WAVE_FORM_next_time_get - if _newclass: - next_time = _swig_property(_sim_services.WAVE_FORM_next_time_get, _sim_services.WAVE_FORM_next_time_set) - __swig_setmethods__["next_val"] = _sim_services.WAVE_FORM_next_val_set - __swig_getmethods__["next_val"] = _sim_services.WAVE_FORM_next_val_get - if _newclass: - next_val = _swig_property(_sim_services.WAVE_FORM_next_val_get, _sim_services.WAVE_FORM_next_val_set) - __swig_setmethods__["user_time"] = _sim_services.WAVE_FORM_user_time_set - __swig_getmethods__["user_time"] = _sim_services.WAVE_FORM_user_time_get - if _newclass: - user_time = _swig_property(_sim_services.WAVE_FORM_user_time_get, _sim_services.WAVE_FORM_user_time_set) - __swig_setmethods__["user_val"] = _sim_services.WAVE_FORM_user_val_set - __swig_getmethods__["user_val"] = _sim_services.WAVE_FORM_user_val_get - if _newclass: - user_val = _swig_property(_sim_services.WAVE_FORM_user_val_get, _sim_services.WAVE_FORM_user_val_set) - - def __init__(self): - this = _sim_services.new_WAVE_FORM() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_WAVE_FORM - __del__ = lambda self: None -WAVE_FORM_swigregister = _sim_services.WAVE_FORM_swigregister -WAVE_FORM_swigregister(WAVE_FORM) - - -def integrate(*args): - return _sim_services.integrate(*args) -integrate = _sim_services.integrate - -def integrate_1st_order_ode(*args): - return _sim_services.integrate_1st_order_ode(*args) -integrate_1st_order_ode = _sim_services.integrate_1st_order_ode - -def integrate_2nd_order_ode(*args): - return _sim_services.integrate_2nd_order_ode(*args) -integrate_2nd_order_ode = _sim_services.integrate_2nd_order_ode - -def get_integ_time(*args): - return _sim_services.get_integ_time(*args) -get_integ_time = _sim_services.get_integ_time - -def set_integ_time(*args): - return _sim_services.set_integ_time(*args) -set_integ_time = _sim_services.set_integ_time - -def reset_state(*args): - return _sim_services.reset_state(*args) -reset_state = _sim_services.reset_state - -def load_state(*args): - return _sim_services.load_state(*args) -load_state = _sim_services.load_state - -def load_deriv(*args): - return _sim_services.load_deriv(*args) -load_deriv = _sim_services.load_deriv - -def load_deriv2(*args): - return _sim_services.load_deriv2(*args) -load_deriv2 = _sim_services.load_deriv2 - -def unload_state(*args): - return _sim_services.unload_state(*args) -unload_state = _sim_services.unload_state - -def load_indexed_state(*args): - return _sim_services.load_indexed_state(*args) -load_indexed_state = _sim_services.load_indexed_state - -def load_indexed_deriv(*args): - return _sim_services.load_indexed_deriv(*args) -load_indexed_deriv = _sim_services.load_indexed_deriv - -def load_indexed_deriv2(*args): - return _sim_services.load_indexed_deriv2(*args) -load_indexed_deriv2 = _sim_services.load_indexed_deriv2 - -def unload_indexed_state(*args): - return _sim_services.unload_indexed_state(*args) -unload_indexed_state = _sim_services.unload_indexed_state - -def get_intermediate_step(*args): - return _sim_services.get_intermediate_step(*args) -get_intermediate_step = _sim_services.get_intermediate_step - -def set_intermediate_step(*args): - return _sim_services.set_intermediate_step(*args) -set_intermediate_step = _sim_services.set_intermediate_step - -def get_integ_type(*args): - return _sim_services.get_integ_type(*args) -get_integ_type = _sim_services.get_integ_type -MAX_TRIADS = _sim_services.MAX_TRIADS -MAX_UNITS_SPEC_STRLEN = _sim_services.MAX_UNITS_SPEC_STRLEN -CONV_OK = _sim_services.CONV_OK -CONV_ERR = _sim_services.CONV_ERR -class triad_t(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, triad_t, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, triad_t, name) - __repr__ = _swig_repr - __swig_setmethods__["op"] = _sim_services.triad_t_op_set - __swig_getmethods__["op"] = _sim_services.triad_t_op_get - if _newclass: - op = _swig_property(_sim_services.triad_t_op_get, _sim_services.triad_t_op_set) - __swig_setmethods__["a1"] = _sim_services.triad_t_a1_set - __swig_getmethods__["a1"] = _sim_services.triad_t_a1_get - if _newclass: - a1 = _swig_property(_sim_services.triad_t_a1_get, _sim_services.triad_t_a1_set) - __swig_setmethods__["a2"] = _sim_services.triad_t_a2_set - __swig_getmethods__["a2"] = _sim_services.triad_t_a2_get - if _newclass: - a2 = _swig_property(_sim_services.triad_t_a2_get, _sim_services.triad_t_a2_set) - - def __init__(self): - this = _sim_services.new_triad_t() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_triad_t - __del__ = lambda self: None -triad_t_swigregister = _sim_services.triad_t_swigregister -triad_t_swigregister(triad_t) - -class Units_t(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Units_t, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Units_t, name) - __repr__ = _swig_repr - __swig_setmethods__["nt"] = _sim_services.Units_t_nt_set - __swig_getmethods__["nt"] = _sim_services.Units_t_nt_get - if _newclass: - nt = _swig_property(_sim_services.Units_t_nt_get, _sim_services.Units_t_nt_set) - __swig_setmethods__["t"] = _sim_services.Units_t_t_set - __swig_getmethods__["t"] = _sim_services.Units_t_t_get - if _newclass: - t = _swig_property(_sim_services.Units_t_t_get, _sim_services.Units_t_t_set) - - def __init__(self): - this = _sim_services.new_Units_t() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_Units_t - __del__ = lambda self: None -Units_t_swigregister = _sim_services.Units_t_swigregister -Units_t_swigregister(Units_t) - -class UnitsConvFn_t(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, UnitsConvFn_t, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, UnitsConvFn_t, name) - __repr__ = _swig_repr - __swig_setmethods__["C"] = _sim_services.UnitsConvFn_t_C_set - __swig_getmethods__["C"] = _sim_services.UnitsConvFn_t_C_get - if _newclass: - C = _swig_property(_sim_services.UnitsConvFn_t_C_get, _sim_services.UnitsConvFn_t_C_set) - - def __init__(self): - this = _sim_services.new_UnitsConvFn_t() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_UnitsConvFn_t - __del__ = lambda self: None -UnitsConvFn_t_swigregister = _sim_services.UnitsConvFn_t_swigregister -UnitsConvFn_t_swigregister(UnitsConvFn_t) - - -def new_units(*args): - return _sim_services.new_units(*args) -new_units = _sim_services.new_units - -def conv_fn_u(*args): - return _sim_services.conv_fn_u(*args) -conv_fn_u = _sim_services.conv_fn_u - -def conv_fn_s(*args): - return _sim_services.conv_fn_s(*args) -conv_fn_s = _sim_services.conv_fn_s - -def convert_units(*args): - return _sim_services.convert_units(*args) -convert_units = _sim_services.convert_units - -def convert_units_spec(*args): - return _sim_services.convert_units_spec(*args) -convert_units_spec = _sim_services.convert_units_spec - -def list_units(*args): - return _sim_services.list_units(*args) -list_units = _sim_services.list_units -class Clock(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Clock, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Clock, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_Clock - __del__ = lambda self: None - - def calc_sim_time_ratio(self, *args): - return _sim_services.Clock_calc_sim_time_ratio(self, *args) - - def get_rt_clock_ratio(self, *args): - return _sim_services.Clock_get_rt_clock_ratio(self, *args) - - def set_global_clock(self, *args): - return _sim_services.Clock_set_global_clock(self, *args) - - def set_rt_clock_ratio(self, *args): - return _sim_services.Clock_set_rt_clock_ratio(self, *args) - - def adjust_ref_time(self, *args): - return _sim_services.Clock_adjust_ref_time(self, *args) - - def set_reference(self, *args): - return _sim_services.Clock_set_reference(self, *args) - - def sync_to_wall_clock(self, *args): - return _sim_services.Clock_sync_to_wall_clock(self, *args) - - def clock_time(self, *args): - return _sim_services.Clock_clock_time(self, *args) - - def clock_reset(self, *args): - return _sim_services.Clock_clock_reset(self, *args) - - def get_name(self, *args): - return _sim_services.Clock_get_name(self, *args) - - def clock_init(self, *args): - return _sim_services.Clock_clock_init(self, *args) - - def wall_clock_time(self, *args): - return _sim_services.Clock_wall_clock_time(self, *args) - - def clock_spin(self, *args): - return _sim_services.Clock_clock_spin(self, *args) - - def clock_stop(self, *args): - return _sim_services.Clock_clock_stop(self, *args) - __swig_setmethods__["name"] = _sim_services.Clock_name_set - __swig_getmethods__["name"] = _sim_services.Clock_name_get - if _newclass: - name = _swig_property(_sim_services.Clock_name_get, _sim_services.Clock_name_set) - __swig_setmethods__["clock_tics_per_sec"] = _sim_services.Clock_clock_tics_per_sec_set - __swig_getmethods__["clock_tics_per_sec"] = _sim_services.Clock_clock_tics_per_sec_get - if _newclass: - clock_tics_per_sec = _swig_property(_sim_services.Clock_clock_tics_per_sec_get, _sim_services.Clock_clock_tics_per_sec_set) - __swig_setmethods__["rt_clock_ratio"] = _sim_services.Clock_rt_clock_ratio_set - __swig_getmethods__["rt_clock_ratio"] = _sim_services.Clock_rt_clock_ratio_get - if _newclass: - rt_clock_ratio = _swig_property(_sim_services.Clock_rt_clock_ratio_get, _sim_services.Clock_rt_clock_ratio_set) - __swig_setmethods__["sim_tic_ratio"] = _sim_services.Clock_sim_tic_ratio_set - __swig_getmethods__["sim_tic_ratio"] = _sim_services.Clock_sim_tic_ratio_get - if _newclass: - sim_tic_ratio = _swig_property(_sim_services.Clock_sim_tic_ratio_get, _sim_services.Clock_sim_tic_ratio_set) - __swig_setmethods__["ref_time_tics"] = _sim_services.Clock_ref_time_tics_set - __swig_getmethods__["ref_time_tics"] = _sim_services.Clock_ref_time_tics_get - if _newclass: - ref_time_tics = _swig_property(_sim_services.Clock_ref_time_tics_get, _sim_services.Clock_ref_time_tics_set) -Clock_swigregister = _sim_services.Clock_swigregister -Clock_swigregister(Clock) - -class GetTimeOfDayClock(Clock): - __swig_setmethods__ = {} - for _s in [Clock]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, GetTimeOfDayClock, name, value) - __swig_getmethods__ = {} - for _s in [Clock]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, GetTimeOfDayClock, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_GetTimeOfDayClock(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_GetTimeOfDayClock - __del__ = lambda self: None - - def clock_init(self, *args): - return _sim_services.GetTimeOfDayClock_clock_init(self, *args) - - def wall_clock_time(self, *args): - return _sim_services.GetTimeOfDayClock_wall_clock_time(self, *args) - - def clock_stop(self, *args): - return _sim_services.GetTimeOfDayClock_clock_stop(self, *args) - - def set_clock_ID(self, *args): - return _sim_services.GetTimeOfDayClock_set_clock_ID(self, *args) - - def get_clock_ID(self, *args): - return _sim_services.GetTimeOfDayClock_get_clock_ID(self, *args) -GetTimeOfDayClock_swigregister = _sim_services.GetTimeOfDayClock_swigregister -GetTimeOfDayClock_swigregister(GetTimeOfDayClock) - - -def clock_time(*args): - return _sim_services.clock_time(*args) -clock_time = _sim_services.clock_time - -def clock_wall_time(*args): - return _sim_services.clock_wall_time(*args) -clock_wall_time = _sim_services.clock_wall_time - -def clock_reset(*args): - return _sim_services.clock_reset(*args) -clock_reset = _sim_services.clock_reset - -def clock_spin(*args): - return _sim_services.clock_spin(*args) -clock_spin = _sim_services.clock_spin - -def clock_set_reference(*args): - return _sim_services.clock_set_reference(*args) -clock_set_reference = _sim_services.clock_set_reference - -def clock_get_rt_clock_ratio(*args): - return _sim_services.clock_get_rt_clock_ratio(*args) -clock_get_rt_clock_ratio = _sim_services.clock_get_rt_clock_ratio - -def clock_set_rt_clock_ratio(*args): - return _sim_services.clock_set_rt_clock_ratio(*args) -clock_set_rt_clock_ratio = _sim_services.clock_set_rt_clock_ratio - -def clock_tics_per_sec(*args): - return _sim_services.clock_tics_per_sec(*args) -clock_tics_per_sec = _sim_services.clock_tics_per_sec -class CommandLineArguments(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, CommandLineArguments, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, CommandLineArguments, name) - __repr__ = _swig_repr - __swig_setmethods__["argc"] = _sim_services.CommandLineArguments_argc_set - __swig_getmethods__["argc"] = _sim_services.CommandLineArguments_argc_get - if _newclass: - argc = _swig_property(_sim_services.CommandLineArguments_argc_get, _sim_services.CommandLineArguments_argc_set) - __swig_setmethods__["argv"] = _sim_services.CommandLineArguments_argv_set - __swig_getmethods__["argv"] = _sim_services.CommandLineArguments_argv_get - if _newclass: - argv = _swig_property(_sim_services.CommandLineArguments_argv_get, _sim_services.CommandLineArguments_argv_set) - __swig_setmethods__["output_dir_timestamped"] = _sim_services.CommandLineArguments_output_dir_timestamped_set - __swig_getmethods__["output_dir_timestamped"] = _sim_services.CommandLineArguments_output_dir_timestamped_get - if _newclass: - output_dir_timestamped = _swig_property(_sim_services.CommandLineArguments_output_dir_timestamped_get, _sim_services.CommandLineArguments_output_dir_timestamped_set) - __swig_setmethods__["default_dir"] = _sim_services.CommandLineArguments_default_dir_set - __swig_getmethods__["default_dir"] = _sim_services.CommandLineArguments_default_dir_get - if _newclass: - default_dir = _swig_property(_sim_services.CommandLineArguments_default_dir_get, _sim_services.CommandLineArguments_default_dir_set) - __swig_setmethods__["cmdline_name"] = _sim_services.CommandLineArguments_cmdline_name_set - __swig_getmethods__["cmdline_name"] = _sim_services.CommandLineArguments_cmdline_name_get - if _newclass: - cmdline_name = _swig_property(_sim_services.CommandLineArguments_cmdline_name_get, _sim_services.CommandLineArguments_cmdline_name_set) - __swig_setmethods__["run_dir"] = _sim_services.CommandLineArguments_run_dir_set - __swig_getmethods__["run_dir"] = _sim_services.CommandLineArguments_run_dir_get - if _newclass: - run_dir = _swig_property(_sim_services.CommandLineArguments_run_dir_get, _sim_services.CommandLineArguments_run_dir_set) - __swig_setmethods__["user_output_dir"] = _sim_services.CommandLineArguments_user_output_dir_set - __swig_getmethods__["user_output_dir"] = _sim_services.CommandLineArguments_user_output_dir_get - if _newclass: - user_output_dir = _swig_property(_sim_services.CommandLineArguments_user_output_dir_get, _sim_services.CommandLineArguments_user_output_dir_set) - __swig_setmethods__["time_stamp_dir"] = _sim_services.CommandLineArguments_time_stamp_dir_set - __swig_getmethods__["time_stamp_dir"] = _sim_services.CommandLineArguments_time_stamp_dir_get - if _newclass: - time_stamp_dir = _swig_property(_sim_services.CommandLineArguments_time_stamp_dir_get, _sim_services.CommandLineArguments_time_stamp_dir_set) - __swig_setmethods__["output_dir"] = _sim_services.CommandLineArguments_output_dir_set - __swig_getmethods__["output_dir"] = _sim_services.CommandLineArguments_output_dir_get - if _newclass: - output_dir = _swig_property(_sim_services.CommandLineArguments_output_dir_get, _sim_services.CommandLineArguments_output_dir_set) - __swig_setmethods__["input_file"] = _sim_services.CommandLineArguments_input_file_set - __swig_getmethods__["input_file"] = _sim_services.CommandLineArguments_input_file_get - if _newclass: - input_file = _swig_property(_sim_services.CommandLineArguments_input_file_get, _sim_services.CommandLineArguments_input_file_set) - - def __init__(self, *args): - this = _sim_services.new_CommandLineArguments(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def process_sim_args(self, *args): - return _sim_services.CommandLineArguments_process_sim_args(self, *args) - - def get_argc(self, *args): - return _sim_services.CommandLineArguments_get_argc(self, *args) - - def get_argv(self, *args): - return _sim_services.CommandLineArguments_get_argv(self, *args) - - def get_output_dir(self, *args): - return _sim_services.CommandLineArguments_get_output_dir(self, *args) - - def get_output_dir_ref(self, *args): - return _sim_services.CommandLineArguments_get_output_dir_ref(self, *args) - - def get_user_output_dir(self, *args): - return _sim_services.CommandLineArguments_get_user_output_dir(self, *args) - - def get_user_output_dir_ref(self, *args): - return _sim_services.CommandLineArguments_get_user_output_dir_ref(self, *args) - - def get_input_file(self, *args): - return _sim_services.CommandLineArguments_get_input_file(self, *args) - - def get_input_file_ref(self, *args): - return _sim_services.CommandLineArguments_get_input_file_ref(self, *args) - - def get_default_dir(self, *args): - return _sim_services.CommandLineArguments_get_default_dir(self, *args) - - def get_default_dir_ref(self, *args): - return _sim_services.CommandLineArguments_get_default_dir_ref(self, *args) - - def get_cmdline_name(self, *args): - return _sim_services.CommandLineArguments_get_cmdline_name(self, *args) - - def get_cmdline_name_ref(self, *args): - return _sim_services.CommandLineArguments_get_cmdline_name_ref(self, *args) - - def output_dir_timestamped_on(self, *args): - return _sim_services.CommandLineArguments_output_dir_timestamped_on(self, *args) - - def output_dir_timestamped_off(self, *args): - return _sim_services.CommandLineArguments_output_dir_timestamped_off(self, *args) - - def set_output_dir(self, *args): - return _sim_services.CommandLineArguments_set_output_dir(self, *args) - if _newclass: - create_path = staticmethod(_sim_services.CommandLineArguments_create_path) - else: - create_path = _sim_services.CommandLineArguments_create_path - __swig_destroy__ = _sim_services.delete_CommandLineArguments - __del__ = lambda self: None -CommandLineArguments_swigregister = _sim_services.CommandLineArguments_swigregister -CommandLineArguments_swigregister(CommandLineArguments) - -def CommandLineArguments_create_path(*args): - return _sim_services.CommandLineArguments_create_path(*args) -CommandLineArguments_create_path = _sim_services.CommandLineArguments_create_path - - -def command_line_args_process_sim_args(*args): - return _sim_services.command_line_args_process_sim_args(*args) -command_line_args_process_sim_args = _sim_services.command_line_args_process_sim_args - -def command_line_args_get_argc(*args): - return _sim_services.command_line_args_get_argc(*args) -command_line_args_get_argc = _sim_services.command_line_args_get_argc - -def command_line_args_get_argv(*args): - return _sim_services.command_line_args_get_argv(*args) -command_line_args_get_argv = _sim_services.command_line_args_get_argv - -def command_line_args_get_output_dir(*args): - return _sim_services.command_line_args_get_output_dir(*args) -command_line_args_get_output_dir = _sim_services.command_line_args_get_output_dir - -def command_line_args_get_user_output_dir(*args): - return _sim_services.command_line_args_get_user_output_dir(*args) -command_line_args_get_user_output_dir = _sim_services.command_line_args_get_user_output_dir - -def command_line_args_get_input_file(*args): - return _sim_services.command_line_args_get_input_file(*args) -command_line_args_get_input_file = _sim_services.command_line_args_get_input_file - -def command_line_args_get_default_dir(*args): - return _sim_services.command_line_args_get_default_dir(*args) -command_line_args_get_default_dir = _sim_services.command_line_args_get_default_dir - -def command_line_args_get_cmdline_name(*args): - return _sim_services.command_line_args_get_cmdline_name(*args) -command_line_args_get_cmdline_name = _sim_services.command_line_args_get_cmdline_name - -def output_dir_timestamped_on(*args): - return _sim_services.output_dir_timestamped_on(*args) -output_dir_timestamped_on = _sim_services.output_dir_timestamped_on - -def output_dir_timestamped_off(*args): - return _sim_services.output_dir_timestamped_off(*args) -output_dir_timestamped_off = _sim_services.output_dir_timestamped_off - -def set_output_dir(*args): - return _sim_services.set_output_dir(*args) -set_output_dir = _sim_services.set_output_dir - -def command_line_args_get_input_file_ref(*args): - return _sim_services.command_line_args_get_input_file_ref(*args) -command_line_args_get_input_file_ref = _sim_services.command_line_args_get_input_file_ref - -def create_path(*args): - return _sim_services.create_path(*args) -create_path = _sim_services.create_path -class InstrumentBase(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, InstrumentBase, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, InstrumentBase, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_InstrumentBase - __del__ = lambda self: None - - def get_target_job(self, *args): - return _sim_services.InstrumentBase_get_target_job(self, *args) - __swig_setmethods__["name"] = _sim_services.InstrumentBase_name_set - __swig_getmethods__["name"] = _sim_services.InstrumentBase_name_get - if _newclass: - name = _swig_property(_sim_services.InstrumentBase_name_get, _sim_services.InstrumentBase_name_set) - __swig_setmethods__["phase"] = _sim_services.InstrumentBase_phase_set - __swig_getmethods__["phase"] = _sim_services.InstrumentBase_phase_get - if _newclass: - phase = _swig_property(_sim_services.InstrumentBase_phase_get, _sim_services.InstrumentBase_phase_set) - - def call(self, *args): - return _sim_services.InstrumentBase_call(self, *args) -InstrumentBase_swigregister = _sim_services.InstrumentBase_swigregister -InstrumentBase_swigregister(InstrumentBase) - -class JobData(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, JobData, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, JobData, name) - __repr__ = _swig_repr - __swig_setmethods__["name"] = _sim_services.JobData_name_set - __swig_getmethods__["name"] = _sim_services.JobData_name_get - if _newclass: - name = _swig_property(_sim_services.JobData_name_get, _sim_services.JobData_name_set) - __swig_setmethods__["disabled"] = _sim_services.JobData_disabled_set - __swig_getmethods__["disabled"] = _sim_services.JobData_disabled_get - if _newclass: - disabled = _swig_property(_sim_services.JobData_disabled_get, _sim_services.JobData_disabled_set) - __swig_setmethods__["complete"] = _sim_services.JobData_complete_set - __swig_getmethods__["complete"] = _sim_services.JobData_complete_get - if _newclass: - complete = _swig_property(_sim_services.JobData_complete_get, _sim_services.JobData_complete_set) - __swig_setmethods__["handled"] = _sim_services.JobData_handled_set - __swig_getmethods__["handled"] = _sim_services.JobData_handled_get - if _newclass: - handled = _swig_property(_sim_services.JobData_handled_get, _sim_services.JobData_handled_set) - __swig_setmethods__["cycle"] = _sim_services.JobData_cycle_set - __swig_getmethods__["cycle"] = _sim_services.JobData_cycle_get - if _newclass: - cycle = _swig_property(_sim_services.JobData_cycle_get, _sim_services.JobData_cycle_set) - __swig_setmethods__["start"] = _sim_services.JobData_start_set - __swig_getmethods__["start"] = _sim_services.JobData_start_get - if _newclass: - start = _swig_property(_sim_services.JobData_start_get, _sim_services.JobData_start_set) - __swig_setmethods__["stop"] = _sim_services.JobData_stop_set - __swig_getmethods__["stop"] = _sim_services.JobData_stop_get - if _newclass: - stop = _swig_property(_sim_services.JobData_stop_get, _sim_services.JobData_stop_set) - __swig_setmethods__["sup_class_data"] = _sim_services.JobData_sup_class_data_set - __swig_getmethods__["sup_class_data"] = _sim_services.JobData_sup_class_data_get - if _newclass: - sup_class_data = _swig_property(_sim_services.JobData_sup_class_data_get, _sim_services.JobData_sup_class_data_set) - __swig_setmethods__["job_class"] = _sim_services.JobData_job_class_set - __swig_getmethods__["job_class"] = _sim_services.JobData_job_class_get - if _newclass: - job_class = _swig_property(_sim_services.JobData_job_class_get, _sim_services.JobData_job_class_set) - __swig_setmethods__["job_class_name"] = _sim_services.JobData_job_class_name_set - __swig_getmethods__["job_class_name"] = _sim_services.JobData_job_class_name_get - if _newclass: - job_class_name = _swig_property(_sim_services.JobData_job_class_name_get, _sim_services.JobData_job_class_name_set) - __swig_setmethods__["system_job_class"] = _sim_services.JobData_system_job_class_set - __swig_getmethods__["system_job_class"] = _sim_services.JobData_system_job_class_get - if _newclass: - system_job_class = _swig_property(_sim_services.JobData_system_job_class_get, _sim_services.JobData_system_job_class_set) - __swig_setmethods__["phase"] = _sim_services.JobData_phase_set - __swig_getmethods__["phase"] = _sim_services.JobData_phase_get - if _newclass: - phase = _swig_property(_sim_services.JobData_phase_get, _sim_services.JobData_phase_set) - __swig_setmethods__["tags"] = _sim_services.JobData_tags_set - __swig_getmethods__["tags"] = _sim_services.JobData_tags_get - if _newclass: - tags = _swig_property(_sim_services.JobData_tags_get, _sim_services.JobData_tags_set) - - def tags_begin(self, *args): - return _sim_services.JobData_tags_begin(self, *args) - - def tags_end(self, *args): - return _sim_services.JobData_tags_end(self, *args) - __swig_setmethods__["rt_start_time"] = _sim_services.JobData_rt_start_time_set - __swig_getmethods__["rt_start_time"] = _sim_services.JobData_rt_start_time_get - if _newclass: - rt_start_time = _swig_property(_sim_services.JobData_rt_start_time_get, _sim_services.JobData_rt_start_time_set) - __swig_setmethods__["rt_stop_time"] = _sim_services.JobData_rt_stop_time_set - __swig_getmethods__["rt_stop_time"] = _sim_services.JobData_rt_stop_time_get - if _newclass: - rt_stop_time = _swig_property(_sim_services.JobData_rt_stop_time_get, _sim_services.JobData_rt_stop_time_set) - __swig_setmethods__["frame_time"] = _sim_services.JobData_frame_time_set - __swig_getmethods__["frame_time"] = _sim_services.JobData_frame_time_get - if _newclass: - frame_time = _swig_property(_sim_services.JobData_frame_time_get, _sim_services.JobData_frame_time_set) - __swig_setmethods__["frame_id"] = _sim_services.JobData_frame_id_set - __swig_getmethods__["frame_id"] = _sim_services.JobData_frame_id_get - if _newclass: - frame_id = _swig_property(_sim_services.JobData_frame_id_get, _sim_services.JobData_frame_id_set) - __swig_setmethods__["thread"] = _sim_services.JobData_thread_set - __swig_getmethods__["thread"] = _sim_services.JobData_thread_get - if _newclass: - thread = _swig_property(_sim_services.JobData_thread_get, _sim_services.JobData_thread_set) - __swig_setmethods__["id"] = _sim_services.JobData_id_set - __swig_getmethods__["id"] = _sim_services.JobData_id_get - if _newclass: - id = _swig_property(_sim_services.JobData_id_get, _sim_services.JobData_id_set) - __swig_setmethods__["sim_object_id"] = _sim_services.JobData_sim_object_id_set - __swig_getmethods__["sim_object_id"] = _sim_services.JobData_sim_object_id_get - if _newclass: - sim_object_id = _swig_property(_sim_services.JobData_sim_object_id_get, _sim_services.JobData_sim_object_id_set) - __swig_setmethods__["parent_object"] = _sim_services.JobData_parent_object_set - __swig_getmethods__["parent_object"] = _sim_services.JobData_parent_object_get - if _newclass: - parent_object = _swig_property(_sim_services.JobData_parent_object_get, _sim_services.JobData_parent_object_set) - __swig_setmethods__["depends"] = _sim_services.JobData_depends_set - __swig_getmethods__["depends"] = _sim_services.JobData_depends_get - if _newclass: - depends = _swig_property(_sim_services.JobData_depends_get, _sim_services.JobData_depends_set) - __swig_setmethods__["inst_before"] = _sim_services.JobData_inst_before_set - __swig_getmethods__["inst_before"] = _sim_services.JobData_inst_before_get - if _newclass: - inst_before = _swig_property(_sim_services.JobData_inst_before_get, _sim_services.JobData_inst_before_set) - __swig_setmethods__["inst_after"] = _sim_services.JobData_inst_after_set - __swig_getmethods__["inst_after"] = _sim_services.JobData_inst_after_get - if _newclass: - inst_after = _swig_property(_sim_services.JobData_inst_after_get, _sim_services.JobData_inst_after_set) - __swig_setmethods__["cycle_tics"] = _sim_services.JobData_cycle_tics_set - __swig_getmethods__["cycle_tics"] = _sim_services.JobData_cycle_tics_get - if _newclass: - cycle_tics = _swig_property(_sim_services.JobData_cycle_tics_get, _sim_services.JobData_cycle_tics_set) - __swig_setmethods__["start_tics"] = _sim_services.JobData_start_tics_set - __swig_getmethods__["start_tics"] = _sim_services.JobData_start_tics_get - if _newclass: - start_tics = _swig_property(_sim_services.JobData_start_tics_get, _sim_services.JobData_start_tics_set) - __swig_setmethods__["stop_tics"] = _sim_services.JobData_stop_tics_set - __swig_getmethods__["stop_tics"] = _sim_services.JobData_stop_tics_get - if _newclass: - stop_tics = _swig_property(_sim_services.JobData_stop_tics_get, _sim_services.JobData_stop_tics_set) - __swig_setmethods__["next_tics"] = _sim_services.JobData_next_tics_set - __swig_getmethods__["next_tics"] = _sim_services.JobData_next_tics_get - if _newclass: - next_tics = _swig_property(_sim_services.JobData_next_tics_get, _sim_services.JobData_next_tics_set) - __swig_setmethods__["time_tic_value"] = _sim_services.JobData_time_tic_value_set - __swig_getmethods__["time_tic_value"] = _sim_services.JobData_time_tic_value_get - if _newclass: - time_tic_value = _swig_property(_sim_services.JobData_time_tic_value_get, _sim_services.JobData_time_tic_value_set) - - def __init__(self, *args): - this = _sim_services.new_JobData(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_JobData - __del__ = lambda self: None - - def get_handled(self, *args): - return _sim_services.JobData_get_handled(self, *args) - - def enable(self, *args): - return _sim_services.JobData_enable(self, *args) - - def disable(self, *args): - return _sim_services.JobData_disable(self, *args) - - def set_handled(self, *args): - return _sim_services.JobData_set_handled(self, *args) - if _newclass: - set_time_tic_value = staticmethod(_sim_services.JobData_set_time_tic_value) - else: - set_time_tic_value = _sim_services.JobData_set_time_tic_value - - def set_cycle(self, *args): - return _sim_services.JobData_set_cycle(self, *args) - - def calc_cycle_tics(self, *args): - return _sim_services.JobData_calc_cycle_tics(self, *args) - - def set_next_call_time(self, *args): - return _sim_services.JobData_set_next_call_time(self, *args) - - def set_system_job_class(self, *args): - return _sim_services.JobData_set_system_job_class(self, *args) - - def add_tag(self, *args): - return _sim_services.JobData_add_tag(self, *args) - - def add_depend(self, *args): - return _sim_services.JobData_add_depend(self, *args) - - def add_inst_before(self, *args): - return _sim_services.JobData_add_inst_before(self, *args) - - def add_inst_after(self, *args): - return _sim_services.JobData_add_inst_after(self, *args) - - def remove_inst(self, *args): - return _sim_services.JobData_remove_inst(self, *args) - - def call(self, *args): - return _sim_services.JobData_call(self, *args) - - def call_double(self, *args): - return _sim_services.JobData_call_double(self, *args) - - def copy_from_checkpoint(self, *args): - return _sim_services.JobData_copy_from_checkpoint(self, *args) -JobData_swigregister = _sim_services.JobData_swigregister -JobData_swigregister(JobData) - -def JobData_set_time_tic_value(*args): - return _sim_services.JobData_set_time_tic_value(*args) -JobData_set_time_tic_value = _sim_services.JobData_set_time_tic_value - -class SimObject(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SimObject, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SimObject, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_setmethods__["name"] = _sim_services.SimObject_name_set - __swig_getmethods__["name"] = _sim_services.SimObject_name_get - if _newclass: - name = _swig_property(_sim_services.SimObject_name_get, _sim_services.SimObject_name_set) - __swig_setmethods__["id"] = _sim_services.SimObject_id_set - __swig_getmethods__["id"] = _sim_services.SimObject_id_get - if _newclass: - id = _swig_property(_sim_services.SimObject_id_get, _sim_services.SimObject_id_set) - __swig_setmethods__["object_disabled"] = _sim_services.SimObject_object_disabled_set - __swig_getmethods__["object_disabled"] = _sim_services.SimObject_object_disabled_get - if _newclass: - object_disabled = _swig_property(_sim_services.SimObject_object_disabled_get, _sim_services.SimObject_object_disabled_set) - __swig_setmethods__["saved_job_states"] = _sim_services.SimObject_saved_job_states_set - __swig_getmethods__["saved_job_states"] = _sim_services.SimObject_saved_job_states_get - if _newclass: - saved_job_states = _swig_property(_sim_services.SimObject_saved_job_states_get, _sim_services.SimObject_saved_job_states_set) - __swig_setmethods__["pre_component_objects"] = _sim_services.SimObject_pre_component_objects_set - __swig_getmethods__["pre_component_objects"] = _sim_services.SimObject_pre_component_objects_get - if _newclass: - pre_component_objects = _swig_property(_sim_services.SimObject_pre_component_objects_get, _sim_services.SimObject_pre_component_objects_set) - __swig_setmethods__["post_component_objects"] = _sim_services.SimObject_post_component_objects_set - __swig_getmethods__["post_component_objects"] = _sim_services.SimObject_post_component_objects_get - if _newclass: - post_component_objects = _swig_property(_sim_services.SimObject_post_component_objects_get, _sim_services.SimObject_post_component_objects_set) - __swig_setmethods__["jobs"] = _sim_services.SimObject_jobs_set - __swig_getmethods__["jobs"] = _sim_services.SimObject_jobs_get - if _newclass: - jobs = _swig_property(_sim_services.SimObject_jobs_get, _sim_services.SimObject_jobs_set) - __swig_destroy__ = _sim_services.delete_SimObject - __del__ = lambda self: None - - def get_job(self, *args): - return _sim_services.SimObject_get_job(self, *args) - - def add_tag(self, *args): - return _sim_services.SimObject_add_tag(self, *args) - - def add_tag_to_job(self, *args): - return _sim_services.SimObject_add_tag_to_job(self, *args) - - def add_pre_component_object(self, *args): - return _sim_services.SimObject_add_pre_component_object(self, *args) - - def add_post_component_object(self, *args): - return _sim_services.SimObject_add_post_component_object(self, *args) - - def add_job(self, *args): - return _sim_services.SimObject_add_job(self, *args) - - def enable_all_jobs(self, *args): - return _sim_services.SimObject_enable_all_jobs(self, *args) - - def enable(self, *args): - return _sim_services.SimObject_enable(self, *args) - - def disable_all_jobs(self, *args): - return _sim_services.SimObject_disable_all_jobs(self, *args) - - def disable(self, *args): - return _sim_services.SimObject_disable(self, *args) - - def call_function(self, *args): - return _sim_services.SimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _sim_services.SimObject_call_function_double(self, *args) -SimObject_swigregister = _sim_services.SimObject_swigregister -SimObject_swigregister(SimObject) - -TRICK_VOID = _sim_services.TRICK_VOID -TRICK_CHARACTER = _sim_services.TRICK_CHARACTER -TRICK_UNSIGNED_CHARACTER = _sim_services.TRICK_UNSIGNED_CHARACTER -TRICK_STRING = _sim_services.TRICK_STRING -TRICK_SHORT = _sim_services.TRICK_SHORT -TRICK_UNSIGNED_SHORT = _sim_services.TRICK_UNSIGNED_SHORT -TRICK_INTEGER = _sim_services.TRICK_INTEGER -TRICK_UNSIGNED_INTEGER = _sim_services.TRICK_UNSIGNED_INTEGER -TRICK_LONG = _sim_services.TRICK_LONG -TRICK_UNSIGNED_LONG = _sim_services.TRICK_UNSIGNED_LONG -TRICK_FLOAT = _sim_services.TRICK_FLOAT -TRICK_DOUBLE = _sim_services.TRICK_DOUBLE -TRICK_BITFIELD = _sim_services.TRICK_BITFIELD -TRICK_UNSIGNED_BITFIELD = _sim_services.TRICK_UNSIGNED_BITFIELD -TRICK_LONG_LONG = _sim_services.TRICK_LONG_LONG -TRICK_UNSIGNED_LONG_LONG = _sim_services.TRICK_UNSIGNED_LONG_LONG -TRICK_FILE_PTR = _sim_services.TRICK_FILE_PTR -TRICK_BOOLEAN = _sim_services.TRICK_BOOLEAN -TRICK_WCHAR = _sim_services.TRICK_WCHAR -TRICK_WSTRING = _sim_services.TRICK_WSTRING -TRICK_VOID_PTR = _sim_services.TRICK_VOID_PTR -TRICK_ENUMERATED = _sim_services.TRICK_ENUMERATED -TRICK_STRUCTURED = _sim_services.TRICK_STRUCTURED -TRICK_OPAQUE_TYPE = _sim_services.TRICK_OPAQUE_TYPE -TRICK_STL = _sim_services.TRICK_STL -TRICK_NUMBER_OF_TYPES = _sim_services.TRICK_NUMBER_OF_TYPES - -def trickTypeCharString(*args): - return _sim_services.trickTypeCharString(*args) -trickTypeCharString = _sim_services.trickTypeCharString -TRICK_VAR_OUTPUT = _sim_services.TRICK_VAR_OUTPUT -TRICK_VAR_INPUT = _sim_services.TRICK_VAR_INPUT -TRICK_CHKPNT_OUTPUT = _sim_services.TRICK_CHKPNT_OUTPUT -TRICK_CHKPNT_INPUT = _sim_services.TRICK_CHKPNT_INPUT -TRICK_MODS_UNITSDASHDASH = _sim_services.TRICK_MODS_UNITSDASHDASH -TRICK_MAX_INDEX = _sim_services.TRICK_MAX_INDEX -Language_C = _sim_services.Language_C -Language_CPP = _sim_services.Language_CPP -class ENUM_ATTR(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ENUM_ATTR, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ENUM_ATTR, name) - __repr__ = _swig_repr - __swig_setmethods__["label"] = _sim_services.ENUM_ATTR_label_set - __swig_getmethods__["label"] = _sim_services.ENUM_ATTR_label_get - if _newclass: - label = _swig_property(_sim_services.ENUM_ATTR_label_get, _sim_services.ENUM_ATTR_label_set) - __swig_setmethods__["value"] = _sim_services.ENUM_ATTR_value_set - __swig_getmethods__["value"] = _sim_services.ENUM_ATTR_value_get - if _newclass: - value = _swig_property(_sim_services.ENUM_ATTR_value_get, _sim_services.ENUM_ATTR_value_set) - __swig_setmethods__["mods"] = _sim_services.ENUM_ATTR_mods_set - __swig_getmethods__["mods"] = _sim_services.ENUM_ATTR_mods_get - if _newclass: - mods = _swig_property(_sim_services.ENUM_ATTR_mods_get, _sim_services.ENUM_ATTR_mods_set) - - def __init__(self): - this = _sim_services.new_ENUM_ATTR() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ENUM_ATTR - __del__ = lambda self: None -ENUM_ATTR_swigregister = _sim_services.ENUM_ATTR_swigregister -ENUM_ATTR_swigregister(ENUM_ATTR) - -class INDEX(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, INDEX, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, INDEX, name) - __repr__ = _swig_repr - __swig_setmethods__["size"] = _sim_services.INDEX_size_set - __swig_getmethods__["size"] = _sim_services.INDEX_size_get - if _newclass: - size = _swig_property(_sim_services.INDEX_size_get, _sim_services.INDEX_size_set) - __swig_setmethods__["start"] = _sim_services.INDEX_start_set - __swig_getmethods__["start"] = _sim_services.INDEX_start_get - if _newclass: - start = _swig_property(_sim_services.INDEX_start_get, _sim_services.INDEX_start_set) - - def __init__(self): - this = _sim_services.new_INDEX() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_INDEX - __del__ = lambda self: None -INDEX_swigregister = _sim_services.INDEX_swigregister -INDEX_swigregister(INDEX) - -class ATTRIBUTES(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ATTRIBUTES, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ATTRIBUTES, name) - __repr__ = _swig_repr - __swig_setmethods__["name"] = _sim_services.ATTRIBUTES_name_set - __swig_getmethods__["name"] = _sim_services.ATTRIBUTES_name_get - if _newclass: - name = _swig_property(_sim_services.ATTRIBUTES_name_get, _sim_services.ATTRIBUTES_name_set) - __swig_setmethods__["type_name"] = _sim_services.ATTRIBUTES_type_name_set - __swig_getmethods__["type_name"] = _sim_services.ATTRIBUTES_type_name_get - if _newclass: - type_name = _swig_property(_sim_services.ATTRIBUTES_type_name_get, _sim_services.ATTRIBUTES_type_name_set) - __swig_setmethods__["units"] = _sim_services.ATTRIBUTES_units_set - __swig_getmethods__["units"] = _sim_services.ATTRIBUTES_units_get - if _newclass: - units = _swig_property(_sim_services.ATTRIBUTES_units_get, _sim_services.ATTRIBUTES_units_set) - __swig_setmethods__["alias"] = _sim_services.ATTRIBUTES_alias_set - __swig_getmethods__["alias"] = _sim_services.ATTRIBUTES_alias_get - if _newclass: - alias = _swig_property(_sim_services.ATTRIBUTES_alias_get, _sim_services.ATTRIBUTES_alias_set) - __swig_setmethods__["user_defined"] = _sim_services.ATTRIBUTES_user_defined_set - __swig_getmethods__["user_defined"] = _sim_services.ATTRIBUTES_user_defined_get - if _newclass: - user_defined = _swig_property(_sim_services.ATTRIBUTES_user_defined_get, _sim_services.ATTRIBUTES_user_defined_set) - __swig_setmethods__["des"] = _sim_services.ATTRIBUTES_des_set - __swig_getmethods__["des"] = _sim_services.ATTRIBUTES_des_get - if _newclass: - des = _swig_property(_sim_services.ATTRIBUTES_des_get, _sim_services.ATTRIBUTES_des_set) - __swig_setmethods__["io"] = _sim_services.ATTRIBUTES_io_set - __swig_getmethods__["io"] = _sim_services.ATTRIBUTES_io_get - if _newclass: - io = _swig_property(_sim_services.ATTRIBUTES_io_get, _sim_services.ATTRIBUTES_io_set) - __swig_setmethods__["type"] = _sim_services.ATTRIBUTES_type_set - __swig_getmethods__["type"] = _sim_services.ATTRIBUTES_type_get - if _newclass: - type = _swig_property(_sim_services.ATTRIBUTES_type_get, _sim_services.ATTRIBUTES_type_set) - __swig_setmethods__["size"] = _sim_services.ATTRIBUTES_size_set - __swig_getmethods__["size"] = _sim_services.ATTRIBUTES_size_get - if _newclass: - size = _swig_property(_sim_services.ATTRIBUTES_size_get, _sim_services.ATTRIBUTES_size_set) - __swig_setmethods__["range_min"] = _sim_services.ATTRIBUTES_range_min_set - __swig_getmethods__["range_min"] = _sim_services.ATTRIBUTES_range_min_get - if _newclass: - range_min = _swig_property(_sim_services.ATTRIBUTES_range_min_get, _sim_services.ATTRIBUTES_range_min_set) - __swig_setmethods__["range_max"] = _sim_services.ATTRIBUTES_range_max_set - __swig_getmethods__["range_max"] = _sim_services.ATTRIBUTES_range_max_get - if _newclass: - range_max = _swig_property(_sim_services.ATTRIBUTES_range_max_get, _sim_services.ATTRIBUTES_range_max_set) - __swig_setmethods__["language"] = _sim_services.ATTRIBUTES_language_set - __swig_getmethods__["language"] = _sim_services.ATTRIBUTES_language_get - if _newclass: - language = _swig_property(_sim_services.ATTRIBUTES_language_get, _sim_services.ATTRIBUTES_language_set) - __swig_setmethods__["mods"] = _sim_services.ATTRIBUTES_mods_set - __swig_getmethods__["mods"] = _sim_services.ATTRIBUTES_mods_get - if _newclass: - mods = _swig_property(_sim_services.ATTRIBUTES_mods_get, _sim_services.ATTRIBUTES_mods_set) - __swig_setmethods__["offset"] = _sim_services.ATTRIBUTES_offset_set - __swig_getmethods__["offset"] = _sim_services.ATTRIBUTES_offset_get - if _newclass: - offset = _swig_property(_sim_services.ATTRIBUTES_offset_get, _sim_services.ATTRIBUTES_offset_set) - __swig_setmethods__["attr"] = _sim_services.ATTRIBUTES_attr_set - __swig_getmethods__["attr"] = _sim_services.ATTRIBUTES_attr_get - if _newclass: - attr = _swig_property(_sim_services.ATTRIBUTES_attr_get, _sim_services.ATTRIBUTES_attr_set) - __swig_setmethods__["num_index"] = _sim_services.ATTRIBUTES_num_index_set - __swig_getmethods__["num_index"] = _sim_services.ATTRIBUTES_num_index_get - if _newclass: - num_index = _swig_property(_sim_services.ATTRIBUTES_num_index_get, _sim_services.ATTRIBUTES_num_index_set) - __swig_setmethods__["index"] = _sim_services.ATTRIBUTES_index_set - __swig_getmethods__["index"] = _sim_services.ATTRIBUTES_index_get - if _newclass: - index = _swig_property(_sim_services.ATTRIBUTES_index_get, _sim_services.ATTRIBUTES_index_set) - __swig_setmethods__["checkpoint_stl"] = _sim_services.ATTRIBUTES_checkpoint_stl_set - __swig_getmethods__["checkpoint_stl"] = _sim_services.ATTRIBUTES_checkpoint_stl_get - if _newclass: - checkpoint_stl = _swig_property(_sim_services.ATTRIBUTES_checkpoint_stl_get, _sim_services.ATTRIBUTES_checkpoint_stl_set) - __swig_setmethods__["post_checkpoint_stl"] = _sim_services.ATTRIBUTES_post_checkpoint_stl_set - __swig_getmethods__["post_checkpoint_stl"] = _sim_services.ATTRIBUTES_post_checkpoint_stl_get - if _newclass: - post_checkpoint_stl = _swig_property(_sim_services.ATTRIBUTES_post_checkpoint_stl_get, _sim_services.ATTRIBUTES_post_checkpoint_stl_set) - __swig_setmethods__["restore_stl"] = _sim_services.ATTRIBUTES_restore_stl_set - __swig_getmethods__["restore_stl"] = _sim_services.ATTRIBUTES_restore_stl_get - if _newclass: - restore_stl = _swig_property(_sim_services.ATTRIBUTES_restore_stl_get, _sim_services.ATTRIBUTES_restore_stl_set) - __swig_setmethods__["clear_stl"] = _sim_services.ATTRIBUTES_clear_stl_set - __swig_getmethods__["clear_stl"] = _sim_services.ATTRIBUTES_clear_stl_get - if _newclass: - clear_stl = _swig_property(_sim_services.ATTRIBUTES_clear_stl_get, _sim_services.ATTRIBUTES_clear_stl_set) - - def __init__(self): - this = _sim_services.new_ATTRIBUTES() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ATTRIBUTES - __del__ = lambda self: None -ATTRIBUTES_swigregister = _sim_services.ATTRIBUTES_swigregister -ATTRIBUTES_swigregister(ATTRIBUTES) - -class ENUM_LIST(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ENUM_LIST, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ENUM_LIST, name) - __repr__ = _swig_repr - __swig_setmethods__["type_name"] = _sim_services.ENUM_LIST_type_name_set - __swig_getmethods__["type_name"] = _sim_services.ENUM_LIST_type_name_get - if _newclass: - type_name = _swig_property(_sim_services.ENUM_LIST_type_name_get, _sim_services.ENUM_LIST_type_name_set) - __swig_setmethods__["E"] = _sim_services.ENUM_LIST_E_set - __swig_getmethods__["E"] = _sim_services.ENUM_LIST_E_get - if _newclass: - E = _swig_property(_sim_services.ENUM_LIST_E_get, _sim_services.ENUM_LIST_E_set) - - def __init__(self): - this = _sim_services.new_ENUM_LIST() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ENUM_LIST - __del__ = lambda self: None -ENUM_LIST_swigregister = _sim_services.ENUM_LIST_swigregister -ENUM_LIST_swigregister(ENUM_LIST) - -class NAME_TO_ATTR(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, NAME_TO_ATTR, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, NAME_TO_ATTR, name) - __repr__ = _swig_repr - __swig_setmethods__["name"] = _sim_services.NAME_TO_ATTR_name_set - __swig_getmethods__["name"] = _sim_services.NAME_TO_ATTR_name_get - if _newclass: - name = _swig_property(_sim_services.NAME_TO_ATTR_name_get, _sim_services.NAME_TO_ATTR_name_set) - __swig_setmethods__["attr"] = _sim_services.NAME_TO_ATTR_attr_set - __swig_getmethods__["attr"] = _sim_services.NAME_TO_ATTR_attr_get - if _newclass: - attr = _swig_property(_sim_services.NAME_TO_ATTR_attr_get, _sim_services.NAME_TO_ATTR_attr_set) - __swig_setmethods__["size"] = _sim_services.NAME_TO_ATTR_size_set - __swig_getmethods__["size"] = _sim_services.NAME_TO_ATTR_size_get - if _newclass: - size = _swig_property(_sim_services.NAME_TO_ATTR_size_get, _sim_services.NAME_TO_ATTR_size_set) - - def __init__(self): - this = _sim_services.new_NAME_TO_ATTR() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_NAME_TO_ATTR - __del__ = lambda self: None -NAME_TO_ATTR_swigregister = _sim_services.NAME_TO_ATTR_swigregister -NAME_TO_ATTR_swigregister(NAME_TO_ATTR) - -class EQUIV_ATTRIBUTES(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, EQUIV_ATTRIBUTES, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, EQUIV_ATTRIBUTES, name) - __repr__ = _swig_repr - __swig_setmethods__["attr"] = _sim_services.EQUIV_ATTRIBUTES_attr_set - __swig_getmethods__["attr"] = _sim_services.EQUIV_ATTRIBUTES_attr_get - if _newclass: - attr = _swig_property(_sim_services.EQUIV_ATTRIBUTES_attr_get, _sim_services.EQUIV_ATTRIBUTES_attr_set) - __swig_setmethods__["base"] = _sim_services.EQUIV_ATTRIBUTES_base_set - __swig_getmethods__["base"] = _sim_services.EQUIV_ATTRIBUTES_base_get - if _newclass: - base = _swig_property(_sim_services.EQUIV_ATTRIBUTES_base_get, _sim_services.EQUIV_ATTRIBUTES_base_set) - - def __init__(self): - this = _sim_services.new_EQUIV_ATTRIBUTES() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_EQUIV_ATTRIBUTES - __del__ = lambda self: None -EQUIV_ATTRIBUTES_swigregister = _sim_services.EQUIV_ATTRIBUTES_swigregister -EQUIV_ATTRIBUTES_swigregister(EQUIV_ATTRIBUTES) - -MAX_VALUE = _sim_services.MAX_VALUE -class VALUE(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VALUE, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VALUE, name) - __repr__ = _swig_repr - __swig_setmethods__["c"] = _sim_services.VALUE_c_set - __swig_getmethods__["c"] = _sim_services.VALUE_c_get - if _newclass: - c = _swig_property(_sim_services.VALUE_c_get, _sim_services.VALUE_c_set) - __swig_setmethods__["cp"] = _sim_services.VALUE_cp_set - __swig_getmethods__["cp"] = _sim_services.VALUE_cp_get - if _newclass: - cp = _swig_property(_sim_services.VALUE_cp_get, _sim_services.VALUE_cp_set) - __swig_setmethods__["s"] = _sim_services.VALUE_s_set - __swig_getmethods__["s"] = _sim_services.VALUE_s_get - if _newclass: - s = _swig_property(_sim_services.VALUE_s_get, _sim_services.VALUE_s_set) - __swig_setmethods__["fp"] = _sim_services.VALUE_fp_set - __swig_getmethods__["fp"] = _sim_services.VALUE_fp_get - if _newclass: - fp = _swig_property(_sim_services.VALUE_fp_get, _sim_services.VALUE_fp_set) - __swig_setmethods__["i"] = _sim_services.VALUE_i_set - __swig_getmethods__["i"] = _sim_services.VALUE_i_get - if _newclass: - i = _swig_property(_sim_services.VALUE_i_get, _sim_services.VALUE_i_set) - __swig_setmethods__["l"] = _sim_services.VALUE_l_set - __swig_getmethods__["l"] = _sim_services.VALUE_l_get - if _newclass: - l = _swig_property(_sim_services.VALUE_l_get, _sim_services.VALUE_l_set) - __swig_setmethods__["f"] = _sim_services.VALUE_f_set - __swig_getmethods__["f"] = _sim_services.VALUE_f_get - if _newclass: - f = _swig_property(_sim_services.VALUE_f_get, _sim_services.VALUE_f_set) - __swig_setmethods__["d"] = _sim_services.VALUE_d_set - __swig_getmethods__["d"] = _sim_services.VALUE_d_get - if _newclass: - d = _swig_property(_sim_services.VALUE_d_get, _sim_services.VALUE_d_set) - __swig_setmethods__["ll"] = _sim_services.VALUE_ll_set - __swig_getmethods__["ll"] = _sim_services.VALUE_ll_get - if _newclass: - ll = _swig_property(_sim_services.VALUE_ll_get, _sim_services.VALUE_ll_set) - __swig_setmethods__["vp"] = _sim_services.VALUE_vp_set - __swig_getmethods__["vp"] = _sim_services.VALUE_vp_get - if _newclass: - vp = _swig_property(_sim_services.VALUE_vp_get, _sim_services.VALUE_vp_set) - - def __init__(self): - this = _sim_services.new_VALUE() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VALUE - __del__ = lambda self: None -VALUE_swigregister = _sim_services.VALUE_swigregister -VALUE_swigregister(VALUE) - -class V_DATA(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, V_DATA, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, V_DATA, name) - __repr__ = _swig_repr - __swig_setmethods__["type"] = _sim_services.V_DATA_type_set - __swig_getmethods__["type"] = _sim_services.V_DATA_type_get - if _newclass: - type = _swig_property(_sim_services.V_DATA_type_get, _sim_services.V_DATA_type_set) - __swig_setmethods__["value"] = _sim_services.V_DATA_value_set - __swig_getmethods__["value"] = _sim_services.V_DATA_value_get - if _newclass: - value = _swig_property(_sim_services.V_DATA_value_get, _sim_services.V_DATA_value_set) - - def __init__(self): - this = _sim_services.new_V_DATA() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_V_DATA - __del__ = lambda self: None -V_DATA_swigregister = _sim_services.V_DATA_swigregister -V_DATA_swigregister(V_DATA) - -class VALUE_LIST(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VALUE_LIST, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VALUE_LIST, name) - __repr__ = _swig_repr - __swig_setmethods__["num_val"] = _sim_services.VALUE_LIST_num_val_set - __swig_getmethods__["num_val"] = _sim_services.VALUE_LIST_num_val_get - if _newclass: - num_val = _swig_property(_sim_services.VALUE_LIST_num_val_get, _sim_services.VALUE_LIST_num_val_set) - __swig_setmethods__["v_data"] = _sim_services.VALUE_LIST_v_data_set - __swig_getmethods__["v_data"] = _sim_services.VALUE_LIST_v_data_get - if _newclass: - v_data = _swig_property(_sim_services.VALUE_LIST_v_data_get, _sim_services.VALUE_LIST_v_data_set) - - def __init__(self): - this = _sim_services.new_VALUE_LIST() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VALUE_LIST - __del__ = lambda self: None -VALUE_LIST_swigregister = _sim_services.VALUE_LIST_swigregister -VALUE_LIST_swigregister(VALUE_LIST) - -class V_TREE(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, V_TREE, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, V_TREE, name) - __repr__ = _swig_repr - __swig_setmethods__["last"] = _sim_services.V_TREE_last_set - __swig_getmethods__["last"] = _sim_services.V_TREE_last_get - if _newclass: - last = _swig_property(_sim_services.V_TREE_last_get, _sim_services.V_TREE_last_set) - __swig_setmethods__["next"] = _sim_services.V_TREE_next_set - __swig_getmethods__["next"] = _sim_services.V_TREE_next_get - if _newclass: - next = _swig_property(_sim_services.V_TREE_next_get, _sim_services.V_TREE_next_set) - __swig_setmethods__["down"] = _sim_services.V_TREE_down_set - __swig_getmethods__["down"] = _sim_services.V_TREE_down_get - if _newclass: - down = _swig_property(_sim_services.V_TREE_down_get, _sim_services.V_TREE_down_set) - __swig_setmethods__["v_data"] = _sim_services.V_TREE_v_data_set - __swig_getmethods__["v_data"] = _sim_services.V_TREE_v_data_get - if _newclass: - v_data = _swig_property(_sim_services.V_TREE_v_data_get, _sim_services.V_TREE_v_data_set) - - def __init__(self): - this = _sim_services.new_V_TREE() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_V_TREE - __del__ = lambda self: None -V_TREE_swigregister = _sim_services.V_TREE_swigregister -V_TREE_swigregister(V_TREE) - -class DLLNODE(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, DLLNODE, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, DLLNODE, name) - __repr__ = _swig_repr - __swig_setmethods__["info"] = _sim_services.DLLNODE_info_set - __swig_getmethods__["info"] = _sim_services.DLLNODE_info_get - if _newclass: - info = _swig_property(_sim_services.DLLNODE_info_get, _sim_services.DLLNODE_info_set) - __swig_setmethods__["prev"] = _sim_services.DLLNODE_prev_set - __swig_getmethods__["prev"] = _sim_services.DLLNODE_prev_get - if _newclass: - prev = _swig_property(_sim_services.DLLNODE_prev_get, _sim_services.DLLNODE_prev_set) - __swig_setmethods__["next"] = _sim_services.DLLNODE_next_set - __swig_getmethods__["next"] = _sim_services.DLLNODE_next_get - if _newclass: - next = _swig_property(_sim_services.DLLNODE_next_get, _sim_services.DLLNODE_next_set) - - def __init__(self): - this = _sim_services.new_DLLNODE() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_DLLNODE - __del__ = lambda self: None -DLLNODE_swigregister = _sim_services.DLLNODE_swigregister -DLLNODE_swigregister(DLLNODE) - -class DLLIST(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, DLLIST, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, DLLIST, name) - __repr__ = _swig_repr - __swig_setmethods__["count"] = _sim_services.DLLIST_count_set - __swig_getmethods__["count"] = _sim_services.DLLIST_count_get - if _newclass: - count = _swig_property(_sim_services.DLLIST_count_get, _sim_services.DLLIST_count_set) - __swig_setmethods__["head"] = _sim_services.DLLIST_head_set - __swig_getmethods__["head"] = _sim_services.DLLIST_head_get - if _newclass: - head = _swig_property(_sim_services.DLLIST_head_get, _sim_services.DLLIST_head_set) - __swig_setmethods__["tail"] = _sim_services.DLLIST_tail_set - __swig_getmethods__["tail"] = _sim_services.DLLIST_tail_get - if _newclass: - tail = _swig_property(_sim_services.DLLIST_tail_get, _sim_services.DLLIST_tail_set) - __swig_setmethods__["compare"] = _sim_services.DLLIST_compare_set - __swig_getmethods__["compare"] = _sim_services.DLLIST_compare_get - if _newclass: - compare = _swig_property(_sim_services.DLLIST_compare_get, _sim_services.DLLIST_compare_set) - - def __init__(self): - this = _sim_services.new_DLLIST() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_DLLIST - __del__ = lambda self: None -DLLIST_swigregister = _sim_services.DLLIST_swigregister -DLLIST_swigregister(DLLIST) - - -def DLL_Create(*args): - return _sim_services.DLL_Create(*args) -DLL_Create = _sim_services.DLL_Create - -def DLL_Delete(*args): - return _sim_services.DLL_Delete(*args) -DLL_Delete = _sim_services.DLL_Delete - -def DLL_Init(*args): - return _sim_services.DLL_Init(*args) -DLL_Init = _sim_services.DLL_Init - -def DLL_GetCount(*args): - return _sim_services.DLL_GetCount(*args) -DLL_GetCount = _sim_services.DLL_GetCount - -def DLL_Find(*args): - return _sim_services.DLL_Find(*args) -DLL_Find = _sim_services.DLL_Find - -def DLL_FindPos(*args): - return _sim_services.DLL_FindPos(*args) -DLL_FindPos = _sim_services.DLL_FindPos - -def DLL_FindIndex(*args): - return _sim_services.DLL_FindIndex(*args) -DLL_FindIndex = _sim_services.DLL_FindIndex - -def DLL_GetAt(*args): - return _sim_services.DLL_GetAt(*args) -DLL_GetAt = _sim_services.DLL_GetAt - -def DLL_SetAt(*args): - return _sim_services.DLL_SetAt(*args) -DLL_SetAt = _sim_services.DLL_SetAt - -def DLL_RemoveAt(*args): - return _sim_services.DLL_RemoveAt(*args) -DLL_RemoveAt = _sim_services.DLL_RemoveAt - -def DLL_RemoveAll(*args): - return _sim_services.DLL_RemoveAll(*args) -DLL_RemoveAll = _sim_services.DLL_RemoveAll - -def DLL_InsertBefore(*args): - return _sim_services.DLL_InsertBefore(*args) -DLL_InsertBefore = _sim_services.DLL_InsertBefore - -def DLL_InsertAfter(*args): - return _sim_services.DLL_InsertAfter(*args) -DLL_InsertAfter = _sim_services.DLL_InsertAfter - -def DLL_GetNext(*args): - return _sim_services.DLL_GetNext(*args) -DLL_GetNext = _sim_services.DLL_GetNext - -def DLL_GetPrev(*args): - return _sim_services.DLL_GetPrev(*args) -DLL_GetPrev = _sim_services.DLL_GetPrev - -def DLL_AddHead(*args): - return _sim_services.DLL_AddHead(*args) -DLL_AddHead = _sim_services.DLL_AddHead - -def DLL_AddTail(*args): - return _sim_services.DLL_AddTail(*args) -DLL_AddTail = _sim_services.DLL_AddTail - -def DLL_GetHeadPosition(*args): - return _sim_services.DLL_GetHeadPosition(*args) -DLL_GetHeadPosition = _sim_services.DLL_GetHeadPosition - -def DLL_GetTailPosition(*args): - return _sim_services.DLL_GetTailPosition(*args) -DLL_GetTailPosition = _sim_services.DLL_GetTailPosition - -def bubble_sort(*args): - return _sim_services.bubble_sort(*args) -bubble_sort = _sim_services.bubble_sort -TRICK_NO_ERROR = _sim_services.TRICK_NO_ERROR -TRICK_PARAMETER_ARRAY_SIZE = _sim_services.TRICK_PARAMETER_ARRAY_SIZE -TRICK_PARAMETER_ADDRESS_NULL = _sim_services.TRICK_PARAMETER_ADDRESS_NULL -TRICK_UNITS_CONVERSION_ERROR = _sim_services.TRICK_UNITS_CONVERSION_ERROR -REF_ADDRESS = _sim_services.REF_ADDRESS -REF_VALUE = _sim_services.REF_VALUE -REF_INVALID = _sim_services.REF_INVALID -AO_ADDRESS = _sim_services.AO_ADDRESS -AO_OFFSET = _sim_services.AO_OFFSET -AO_DEREFERENCE = _sim_services.AO_DEREFERENCE -class ADDRESS_OPERAND(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ADDRESS_OPERAND, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ADDRESS_OPERAND, name) - __repr__ = _swig_repr - __swig_setmethods__["address"] = _sim_services.ADDRESS_OPERAND_address_set - __swig_getmethods__["address"] = _sim_services.ADDRESS_OPERAND_address_get - if _newclass: - address = _swig_property(_sim_services.ADDRESS_OPERAND_address_get, _sim_services.ADDRESS_OPERAND_address_set) - __swig_setmethods__["offset"] = _sim_services.ADDRESS_OPERAND_offset_set - __swig_getmethods__["offset"] = _sim_services.ADDRESS_OPERAND_offset_get - if _newclass: - offset = _swig_property(_sim_services.ADDRESS_OPERAND_offset_get, _sim_services.ADDRESS_OPERAND_offset_set) - - def __init__(self): - this = _sim_services.new_ADDRESS_OPERAND() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ADDRESS_OPERAND - __del__ = lambda self: None -ADDRESS_OPERAND_swigregister = _sim_services.ADDRESS_OPERAND_swigregister -ADDRESS_OPERAND_swigregister(ADDRESS_OPERAND) - -class ADDRESS_NODE(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ADDRESS_NODE, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ADDRESS_NODE, name) - __repr__ = _swig_repr - __swig_setmethods__["operator_"] = _sim_services.ADDRESS_NODE_operator__set - __swig_getmethods__["operator_"] = _sim_services.ADDRESS_NODE_operator__get - if _newclass: - operator_ = _swig_property(_sim_services.ADDRESS_NODE_operator__get, _sim_services.ADDRESS_NODE_operator__set) - __swig_setmethods__["operand"] = _sim_services.ADDRESS_NODE_operand_set - __swig_getmethods__["operand"] = _sim_services.ADDRESS_NODE_operand_get - if _newclass: - operand = _swig_property(_sim_services.ADDRESS_NODE_operand_get, _sim_services.ADDRESS_NODE_operand_set) - - def __init__(self): - this = _sim_services.new_ADDRESS_NODE() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ADDRESS_NODE - __del__ = lambda self: None -ADDRESS_NODE_swigregister = _sim_services.ADDRESS_NODE_swigregister -ADDRESS_NODE_swigregister(ADDRESS_NODE) - -class REF2(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, REF2, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, REF2, name) - __repr__ = _swig_repr - __swig_setmethods__["reference"] = _sim_services.REF2_reference_set - __swig_getmethods__["reference"] = _sim_services.REF2_reference_get - if _newclass: - reference = _swig_property(_sim_services.REF2_reference_get, _sim_services.REF2_reference_set) - __swig_setmethods__["num_index"] = _sim_services.REF2_num_index_set - __swig_getmethods__["num_index"] = _sim_services.REF2_num_index_get - if _newclass: - num_index = _swig_property(_sim_services.REF2_num_index_get, _sim_services.REF2_num_index_set) - __swig_setmethods__["units"] = _sim_services.REF2_units_set - __swig_getmethods__["units"] = _sim_services.REF2_units_get - if _newclass: - units = _swig_property(_sim_services.REF2_units_get, _sim_services.REF2_units_set) - __swig_setmethods__["num_index_left"] = _sim_services.REF2_num_index_left_set - __swig_getmethods__["num_index_left"] = _sim_services.REF2_num_index_left_get - if _newclass: - num_index_left = _swig_property(_sim_services.REF2_num_index_left_get, _sim_services.REF2_num_index_left_set) - __swig_setmethods__["pointer_present"] = _sim_services.REF2_pointer_present_set - __swig_getmethods__["pointer_present"] = _sim_services.REF2_pointer_present_get - if _newclass: - pointer_present = _swig_property(_sim_services.REF2_pointer_present_get, _sim_services.REF2_pointer_present_set) - __swig_setmethods__["ref_type"] = _sim_services.REF2_ref_type_set - __swig_getmethods__["ref_type"] = _sim_services.REF2_ref_type_get - if _newclass: - ref_type = _swig_property(_sim_services.REF2_ref_type_get, _sim_services.REF2_ref_type_set) - __swig_setmethods__["address"] = _sim_services.REF2_address_set - __swig_getmethods__["address"] = _sim_services.REF2_address_get - if _newclass: - address = _swig_property(_sim_services.REF2_address_get, _sim_services.REF2_address_set) - __swig_setmethods__["v_data"] = _sim_services.REF2_v_data_set - __swig_getmethods__["v_data"] = _sim_services.REF2_v_data_get - if _newclass: - v_data = _swig_property(_sim_services.REF2_v_data_get, _sim_services.REF2_v_data_set) - __swig_setmethods__["attr"] = _sim_services.REF2_attr_set - __swig_getmethods__["attr"] = _sim_services.REF2_attr_get - if _newclass: - attr = _swig_property(_sim_services.REF2_attr_get, _sim_services.REF2_attr_set) - __swig_setmethods__["ref_attr"] = _sim_services.REF2_ref_attr_set - __swig_getmethods__["ref_attr"] = _sim_services.REF2_ref_attr_get - if _newclass: - ref_attr = _swig_property(_sim_services.REF2_ref_attr_get, _sim_services.REF2_ref_attr_set) - __swig_setmethods__["create_add_path"] = _sim_services.REF2_create_add_path_set - __swig_getmethods__["create_add_path"] = _sim_services.REF2_create_add_path_get - if _newclass: - create_add_path = _swig_property(_sim_services.REF2_create_add_path_get, _sim_services.REF2_create_add_path_set) - __swig_setmethods__["address_path"] = _sim_services.REF2_address_path_set - __swig_getmethods__["address_path"] = _sim_services.REF2_address_path_get - if _newclass: - address_path = _swig_property(_sim_services.REF2_address_path_get, _sim_services.REF2_address_path_set) - - def __init__(self): - this = _sim_services.new_REF2() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_REF2 - __del__ = lambda self: None -REF2_swigregister = _sim_services.REF2_swigregister -REF2_swigregister(REF2) - - -def ref_to_value(*args): - return _sim_services.ref_to_value(*args) -ref_to_value = _sim_services.ref_to_value -DR_Always = _sim_services.DR_Always -DR_Changes = _sim_services.DR_Changes -DR_Changes_Step = _sim_services.DR_Changes_Step -DR_Buffer = _sim_services.DR_Buffer -DR_No_Buffer = _sim_services.DR_No_Buffer -DR_Ring_Buffer = _sim_services.DR_Ring_Buffer -DR_Thread_Buffer = _sim_services.DR_Thread_Buffer -DR_Not_Specified = _sim_services.DR_Not_Specified -class DataRecordBuffer(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordBuffer, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, DataRecordBuffer, name) - __repr__ = _swig_repr - __swig_setmethods__["buffer"] = _sim_services.DataRecordBuffer_buffer_set - __swig_getmethods__["buffer"] = _sim_services.DataRecordBuffer_buffer_get - if _newclass: - buffer = _swig_property(_sim_services.DataRecordBuffer_buffer_get, _sim_services.DataRecordBuffer_buffer_set) - __swig_setmethods__["curr_buffer"] = _sim_services.DataRecordBuffer_curr_buffer_set - __swig_getmethods__["curr_buffer"] = _sim_services.DataRecordBuffer_curr_buffer_get - if _newclass: - curr_buffer = _swig_property(_sim_services.DataRecordBuffer_curr_buffer_get, _sim_services.DataRecordBuffer_curr_buffer_set) - __swig_setmethods__["last_value"] = _sim_services.DataRecordBuffer_last_value_set - __swig_getmethods__["last_value"] = _sim_services.DataRecordBuffer_last_value_get - if _newclass: - last_value = _swig_property(_sim_services.DataRecordBuffer_last_value_get, _sim_services.DataRecordBuffer_last_value_set) - __swig_setmethods__["ref"] = _sim_services.DataRecordBuffer_ref_set - __swig_getmethods__["ref"] = _sim_services.DataRecordBuffer_ref_get - if _newclass: - ref = _swig_property(_sim_services.DataRecordBuffer_ref_get, _sim_services.DataRecordBuffer_ref_set) - __swig_setmethods__["ref_searched"] = _sim_services.DataRecordBuffer_ref_searched_set - __swig_getmethods__["ref_searched"] = _sim_services.DataRecordBuffer_ref_searched_get - if _newclass: - ref_searched = _swig_property(_sim_services.DataRecordBuffer_ref_searched_get, _sim_services.DataRecordBuffer_ref_searched_set) - __swig_setmethods__["name"] = _sim_services.DataRecordBuffer_name_set - __swig_getmethods__["name"] = _sim_services.DataRecordBuffer_name_get - if _newclass: - name = _swig_property(_sim_services.DataRecordBuffer_name_get, _sim_services.DataRecordBuffer_name_set) - __swig_setmethods__["alias"] = _sim_services.DataRecordBuffer_alias_set - __swig_getmethods__["alias"] = _sim_services.DataRecordBuffer_alias_get - if _newclass: - alias = _swig_property(_sim_services.DataRecordBuffer_alias_get, _sim_services.DataRecordBuffer_alias_set) - - def __init__(self, *args): - this = _sim_services.new_DataRecordBuffer(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_DataRecordBuffer - __del__ = lambda self: None -DataRecordBuffer_swigregister = _sim_services.DataRecordBuffer_swigregister -DataRecordBuffer_swigregister(DataRecordBuffer) - -class DataRecordGroup(SimObject): - __swig_setmethods__ = {} - for _s in [SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordGroup, name, value) - __swig_getmethods__ = {} - for _s in [SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, DataRecordGroup, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_setmethods__["record"] = _sim_services.DataRecordGroup_record_set - __swig_getmethods__["record"] = _sim_services.DataRecordGroup_record_get - if _newclass: - record = _swig_property(_sim_services.DataRecordGroup_record_get, _sim_services.DataRecordGroup_record_set) - __swig_setmethods__["inited"] = _sim_services.DataRecordGroup_inited_set - __swig_getmethods__["inited"] = _sim_services.DataRecordGroup_inited_get - if _newclass: - inited = _swig_property(_sim_services.DataRecordGroup_inited_get, _sim_services.DataRecordGroup_inited_set) - __swig_setmethods__["group_name"] = _sim_services.DataRecordGroup_group_name_set - __swig_getmethods__["group_name"] = _sim_services.DataRecordGroup_group_name_get - if _newclass: - group_name = _swig_property(_sim_services.DataRecordGroup_group_name_get, _sim_services.DataRecordGroup_group_name_set) - __swig_setmethods__["output_dir"] = _sim_services.DataRecordGroup_output_dir_set - __swig_getmethods__["output_dir"] = _sim_services.DataRecordGroup_output_dir_get - if _newclass: - output_dir = _swig_property(_sim_services.DataRecordGroup_output_dir_get, _sim_services.DataRecordGroup_output_dir_set) - __swig_setmethods__["file_name"] = _sim_services.DataRecordGroup_file_name_set - __swig_getmethods__["file_name"] = _sim_services.DataRecordGroup_file_name_get - if _newclass: - file_name = _swig_property(_sim_services.DataRecordGroup_file_name_get, _sim_services.DataRecordGroup_file_name_set) - __swig_setmethods__["freq"] = _sim_services.DataRecordGroup_freq_set - __swig_getmethods__["freq"] = _sim_services.DataRecordGroup_freq_get - if _newclass: - freq = _swig_property(_sim_services.DataRecordGroup_freq_get, _sim_services.DataRecordGroup_freq_set) - __swig_setmethods__["start"] = _sim_services.DataRecordGroup_start_set - __swig_getmethods__["start"] = _sim_services.DataRecordGroup_start_get - if _newclass: - start = _swig_property(_sim_services.DataRecordGroup_start_get, _sim_services.DataRecordGroup_start_set) - __swig_setmethods__["cycle"] = _sim_services.DataRecordGroup_cycle_set - __swig_getmethods__["cycle"] = _sim_services.DataRecordGroup_cycle_get - if _newclass: - cycle = _swig_property(_sim_services.DataRecordGroup_cycle_get, _sim_services.DataRecordGroup_cycle_set) - __swig_setmethods__["time_value_attr"] = _sim_services.DataRecordGroup_time_value_attr_set - __swig_getmethods__["time_value_attr"] = _sim_services.DataRecordGroup_time_value_attr_get - if _newclass: - time_value_attr = _swig_property(_sim_services.DataRecordGroup_time_value_attr_get, _sim_services.DataRecordGroup_time_value_attr_set) - __swig_setmethods__["num_variable_names"] = _sim_services.DataRecordGroup_num_variable_names_set - __swig_getmethods__["num_variable_names"] = _sim_services.DataRecordGroup_num_variable_names_get - if _newclass: - num_variable_names = _swig_property(_sim_services.DataRecordGroup_num_variable_names_get, _sim_services.DataRecordGroup_num_variable_names_set) - __swig_setmethods__["variable_names"] = _sim_services.DataRecordGroup_variable_names_set - __swig_getmethods__["variable_names"] = _sim_services.DataRecordGroup_variable_names_get - if _newclass: - variable_names = _swig_property(_sim_services.DataRecordGroup_variable_names_get, _sim_services.DataRecordGroup_variable_names_set) - __swig_setmethods__["variable_alias"] = _sim_services.DataRecordGroup_variable_alias_set - __swig_getmethods__["variable_alias"] = _sim_services.DataRecordGroup_variable_alias_get - if _newclass: - variable_alias = _swig_property(_sim_services.DataRecordGroup_variable_alias_get, _sim_services.DataRecordGroup_variable_alias_set) - __swig_setmethods__["rec_buffer"] = _sim_services.DataRecordGroup_rec_buffer_set - __swig_getmethods__["rec_buffer"] = _sim_services.DataRecordGroup_rec_buffer_get - if _newclass: - rec_buffer = _swig_property(_sim_services.DataRecordGroup_rec_buffer_get, _sim_services.DataRecordGroup_rec_buffer_set) - __swig_setmethods__["num_change_variable_names"] = _sim_services.DataRecordGroup_num_change_variable_names_set - __swig_getmethods__["num_change_variable_names"] = _sim_services.DataRecordGroup_num_change_variable_names_get - if _newclass: - num_change_variable_names = _swig_property(_sim_services.DataRecordGroup_num_change_variable_names_get, _sim_services.DataRecordGroup_num_change_variable_names_set) - __swig_setmethods__["change_variable_names"] = _sim_services.DataRecordGroup_change_variable_names_set - __swig_getmethods__["change_variable_names"] = _sim_services.DataRecordGroup_change_variable_names_get - if _newclass: - change_variable_names = _swig_property(_sim_services.DataRecordGroup_change_variable_names_get, _sim_services.DataRecordGroup_change_variable_names_set) - __swig_setmethods__["change_variable_alias"] = _sim_services.DataRecordGroup_change_variable_alias_set - __swig_getmethods__["change_variable_alias"] = _sim_services.DataRecordGroup_change_variable_alias_get - if _newclass: - change_variable_alias = _swig_property(_sim_services.DataRecordGroup_change_variable_alias_get, _sim_services.DataRecordGroup_change_variable_alias_set) - __swig_setmethods__["change_buffer"] = _sim_services.DataRecordGroup_change_buffer_set - __swig_getmethods__["change_buffer"] = _sim_services.DataRecordGroup_change_buffer_get - if _newclass: - change_buffer = _swig_property(_sim_services.DataRecordGroup_change_buffer_get, _sim_services.DataRecordGroup_change_buffer_set) - __swig_setmethods__["max_num"] = _sim_services.DataRecordGroup_max_num_set - __swig_getmethods__["max_num"] = _sim_services.DataRecordGroup_max_num_get - if _newclass: - max_num = _swig_property(_sim_services.DataRecordGroup_max_num_get, _sim_services.DataRecordGroup_max_num_set) - __swig_setmethods__["buffer_num"] = _sim_services.DataRecordGroup_buffer_num_set - __swig_getmethods__["buffer_num"] = _sim_services.DataRecordGroup_buffer_num_get - if _newclass: - buffer_num = _swig_property(_sim_services.DataRecordGroup_buffer_num_get, _sim_services.DataRecordGroup_buffer_num_set) - __swig_setmethods__["writer_num"] = _sim_services.DataRecordGroup_writer_num_set - __swig_getmethods__["writer_num"] = _sim_services.DataRecordGroup_writer_num_get - if _newclass: - writer_num = _swig_property(_sim_services.DataRecordGroup_writer_num_get, _sim_services.DataRecordGroup_writer_num_set) - __swig_setmethods__["max_file_size"] = _sim_services.DataRecordGroup_max_file_size_set - __swig_getmethods__["max_file_size"] = _sim_services.DataRecordGroup_max_file_size_get - if _newclass: - max_file_size = _swig_property(_sim_services.DataRecordGroup_max_file_size_get, _sim_services.DataRecordGroup_max_file_size_set) - __swig_setmethods__["total_bytes_written"] = _sim_services.DataRecordGroup_total_bytes_written_set - __swig_getmethods__["total_bytes_written"] = _sim_services.DataRecordGroup_total_bytes_written_get - if _newclass: - total_bytes_written = _swig_property(_sim_services.DataRecordGroup_total_bytes_written_get, _sim_services.DataRecordGroup_total_bytes_written_set) - __swig_setmethods__["max_size_warning"] = _sim_services.DataRecordGroup_max_size_warning_set - __swig_getmethods__["max_size_warning"] = _sim_services.DataRecordGroup_max_size_warning_get - if _newclass: - max_size_warning = _swig_property(_sim_services.DataRecordGroup_max_size_warning_get, _sim_services.DataRecordGroup_max_size_warning_set) - __swig_setmethods__["writer_buff"] = _sim_services.DataRecordGroup_writer_buff_set - __swig_getmethods__["writer_buff"] = _sim_services.DataRecordGroup_writer_buff_get - if _newclass: - writer_buff = _swig_property(_sim_services.DataRecordGroup_writer_buff_get, _sim_services.DataRecordGroup_writer_buff_set) - __swig_setmethods__["writer_buff_size"] = _sim_services.DataRecordGroup_writer_buff_size_set - __swig_getmethods__["writer_buff_size"] = _sim_services.DataRecordGroup_writer_buff_size_get - if _newclass: - writer_buff_size = _swig_property(_sim_services.DataRecordGroup_writer_buff_size_get, _sim_services.DataRecordGroup_writer_buff_size_set) - __swig_setmethods__["byte_order"] = _sim_services.DataRecordGroup_byte_order_set - __swig_getmethods__["byte_order"] = _sim_services.DataRecordGroup_byte_order_get - if _newclass: - byte_order = _swig_property(_sim_services.DataRecordGroup_byte_order_get, _sim_services.DataRecordGroup_byte_order_set) - __swig_setmethods__["single_prec_only"] = _sim_services.DataRecordGroup_single_prec_only_set - __swig_getmethods__["single_prec_only"] = _sim_services.DataRecordGroup_single_prec_only_get - if _newclass: - single_prec_only = _swig_property(_sim_services.DataRecordGroup_single_prec_only_get, _sim_services.DataRecordGroup_single_prec_only_set) - __swig_setmethods__["buffer_type"] = _sim_services.DataRecordGroup_buffer_type_set - __swig_getmethods__["buffer_type"] = _sim_services.DataRecordGroup_buffer_type_get - if _newclass: - buffer_type = _swig_property(_sim_services.DataRecordGroup_buffer_type_get, _sim_services.DataRecordGroup_buffer_type_set) - __swig_setmethods__["job_class"] = _sim_services.DataRecordGroup_job_class_set - __swig_getmethods__["job_class"] = _sim_services.DataRecordGroup_job_class_get - if _newclass: - job_class = _swig_property(_sim_services.DataRecordGroup_job_class_get, _sim_services.DataRecordGroup_job_class_set) - __swig_setmethods__["write_job"] = _sim_services.DataRecordGroup_write_job_set - __swig_getmethods__["write_job"] = _sim_services.DataRecordGroup_write_job_get - if _newclass: - write_job = _swig_property(_sim_services.DataRecordGroup_write_job_get, _sim_services.DataRecordGroup_write_job_set) - __swig_destroy__ = _sim_services.delete_DataRecordGroup - __del__ = lambda self: None - - def get_group_name(self, *args): - return _sim_services.DataRecordGroup_get_group_name(self, *args) - - def register_group_with_mm(self, *args): - return _sim_services.DataRecordGroup_register_group_with_mm(self, *args) - - def set_job_class(self, *args): - return _sim_services.DataRecordGroup_set_job_class(self, *args) - - def set_cycle(self, *args): - return _sim_services.DataRecordGroup_set_cycle(self, *args) - - def set_phase(self, *args): - return _sim_services.DataRecordGroup_set_phase(self, *args) - - def set_freq(self, *args): - return _sim_services.DataRecordGroup_set_freq(self, *args) - - def set_max_buffer_size(self, *args): - return _sim_services.DataRecordGroup_set_max_buffer_size(self, *args) - - def set_buffer_type(self, *args): - return _sim_services.DataRecordGroup_set_buffer_type(self, *args) - - def set_max_file_size(self, *args): - return _sim_services.DataRecordGroup_set_max_file_size(self, *args) - - def set_single_prec_only(self, *args): - return _sim_services.DataRecordGroup_set_single_prec_only(self, *args) - - def set_thread(self, *args): - return _sim_services.DataRecordGroup_set_thread(self, *args) - - def enable(self, *args): - return _sim_services.DataRecordGroup_enable(self, *args) - - def disable(self, *args): - return _sim_services.DataRecordGroup_disable(self, *args) - - def init(self, *args): - return _sim_services.DataRecordGroup_init(self, *args) - - def checkpoint(self, *args): - return _sim_services.DataRecordGroup_checkpoint(self, *args) - - def clear_checkpoint_vars(self, *args): - return _sim_services.DataRecordGroup_clear_checkpoint_vars(self, *args) - - def restart(self, *args): - return _sim_services.DataRecordGroup_restart(self, *args) - - def format_specific_header(self, *args): - return _sim_services.DataRecordGroup_format_specific_header(self, *args) - - def format_specific_init(self, *args): - return _sim_services.DataRecordGroup_format_specific_init(self, *args) - - def format_specific_write_data(self, *args): - return _sim_services.DataRecordGroup_format_specific_write_data(self, *args) - - def format_specific_shutdown(self, *args): - return _sim_services.DataRecordGroup_format_specific_shutdown(self, *args) - - def write_header(self, *args): - return _sim_services.DataRecordGroup_write_header(self, *args) - - def remove_variable(self, *args): - return _sim_services.DataRecordGroup_remove_variable(self, *args) - - def remove_all_variables(self, *args): - return _sim_services.DataRecordGroup_remove_all_variables(self, *args) - - def add_variable(self, *args): - return _sim_services.DataRecordGroup_add_variable(self, *args) - - def add_change_variable(self, *args): - return _sim_services.DataRecordGroup_add_change_variable(self, *args) - - def data_record(self, *args): - return _sim_services.DataRecordGroup_data_record(self, *args) - - def write_data(self, *args): - return _sim_services.DataRecordGroup_write_data(self, *args) - - def shutdown(self, *args): - return _sim_services.DataRecordGroup_shutdown(self, *args) - - def call_function(self, *args): - return _sim_services.DataRecordGroup_call_function(self, *args) - - def call_function_double(self, *args): - return _sim_services.DataRecordGroup_call_function_double(self, *args) - - def type_string(self, *args): - return _sim_services.DataRecordGroup_type_string(self, *args) -DataRecordGroup_swigregister = _sim_services.DataRecordGroup_swigregister -DataRecordGroup_swigregister(DataRecordGroup) - -class DRAscii(DataRecordGroup): - __swig_setmethods__ = {} - for _s in [DataRecordGroup]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, DRAscii, name, value) - __swig_getmethods__ = {} - for _s in [DataRecordGroup]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, DRAscii, name) - __repr__ = _swig_repr - __swig_setmethods__["ascii_float_format"] = _sim_services.DRAscii_ascii_float_format_set - __swig_getmethods__["ascii_float_format"] = _sim_services.DRAscii_ascii_float_format_get - if _newclass: - ascii_float_format = _swig_property(_sim_services.DRAscii_ascii_float_format_get, _sim_services.DRAscii_ascii_float_format_set) - __swig_setmethods__["ascii_double_format"] = _sim_services.DRAscii_ascii_double_format_set - __swig_getmethods__["ascii_double_format"] = _sim_services.DRAscii_ascii_double_format_get - if _newclass: - ascii_double_format = _swig_property(_sim_services.DRAscii_ascii_double_format_get, _sim_services.DRAscii_ascii_double_format_set) - __swig_setmethods__["delimiter"] = _sim_services.DRAscii_delimiter_set - __swig_getmethods__["delimiter"] = _sim_services.DRAscii_delimiter_get - if _newclass: - delimiter = _swig_property(_sim_services.DRAscii_delimiter_get, _sim_services.DRAscii_delimiter_set) - __swig_destroy__ = _sim_services.delete_DRAscii - __del__ = lambda self: None - - def __init__(self, *args): - this = _sim_services.new_DRAscii(*args) - try: self.this.append(this) - except: self.this = this - this.own(0) - self.this.own(0) - - - - def format_specific_header(self, *args): - return _sim_services.DRAscii_format_specific_header(self, *args) - - def format_specific_init(self, *args): - return _sim_services.DRAscii_format_specific_init(self, *args) - - def format_specific_write_data(self, *args): - return _sim_services.DRAscii_format_specific_write_data(self, *args) - - def format_specific_shutdown(self, *args): - return _sim_services.DRAscii_format_specific_shutdown(self, *args) - - def set_ascii_float_format(self, *args): - return _sim_services.DRAscii_set_ascii_float_format(self, *args) - - def set_ascii_double_format(self, *args): - return _sim_services.DRAscii_set_ascii_double_format(self, *args) - - def set_delimiter(self, *args): - return _sim_services.DRAscii_set_delimiter(self, *args) - - def set_single_prec_only(self, *args): - return _sim_services.DRAscii_set_single_prec_only(self, *args) -DRAscii_swigregister = _sim_services.DRAscii_swigregister -DRAscii_swigregister(DRAscii) - -class DRBinary(DataRecordGroup): - __swig_setmethods__ = {} - for _s in [DataRecordGroup]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, DRBinary, name, value) - __swig_getmethods__ = {} - for _s in [DataRecordGroup]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, DRBinary, name) - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_DRBinary - __del__ = lambda self: None - - def __init__(self, *args): - this = _sim_services.new_DRBinary(*args) - try: self.this.append(this) - except: self.this = this - this.own(0) - self.this.own(0) - - - - def format_specific_header(self, outstream): - return _sim_services.DRBinary_format_specific_header(self, outstream) - - def format_specific_init(self): - return _sim_services.DRBinary_format_specific_init(self) - - def format_specific_write_data(self, writer_offset): - return _sim_services.DRBinary_format_specific_write_data(self, writer_offset) - - def format_specific_shutdown(self): - return _sim_services.DRBinary_format_specific_shutdown(self) -DRBinary_swigregister = _sim_services.DRBinary_swigregister -DRBinary_swigregister(DRBinary) - -class HDF5_INFO(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, HDF5_INFO, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, HDF5_INFO, name) - __repr__ = _swig_repr - __swig_setmethods__["dataset"] = _sim_services.HDF5_INFO_dataset_set - __swig_getmethods__["dataset"] = _sim_services.HDF5_INFO_dataset_get - if _newclass: - dataset = _swig_property(_sim_services.HDF5_INFO_dataset_get, _sim_services.HDF5_INFO_dataset_set) - __swig_setmethods__["drb"] = _sim_services.HDF5_INFO_drb_set - __swig_getmethods__["drb"] = _sim_services.HDF5_INFO_drb_get - if _newclass: - drb = _swig_property(_sim_services.HDF5_INFO_drb_get, _sim_services.HDF5_INFO_drb_set) - - def __init__(self): - this = _sim_services.new_HDF5_INFO() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_HDF5_INFO - __del__ = lambda self: None -HDF5_INFO_swigregister = _sim_services.HDF5_INFO_swigregister -HDF5_INFO_swigregister(HDF5_INFO) - -class DRHDF5(DataRecordGroup): - __swig_setmethods__ = {} - for _s in [DataRecordGroup]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, DRHDF5, name, value) - __swig_getmethods__ = {} - for _s in [DataRecordGroup]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, DRHDF5, name) - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_DRHDF5 - __del__ = lambda self: None - - def __init__(self, *args): - this = _sim_services.new_DRHDF5(*args) - try: self.this.append(this) - except: self.this = this - this.own(0) - self.this.own(0) - - - - def format_specific_header(self, *args): - return _sim_services.DRHDF5_format_specific_header(self, *args) - - def format_specific_init(self, *args): - return _sim_services.DRHDF5_format_specific_init(self, *args) - - def write_data(self, *args): - return _sim_services.DRHDF5_write_data(self, *args) - - def format_specific_write_data(self, *args): - return _sim_services.DRHDF5_format_specific_write_data(self, *args) - - def format_specific_shutdown(self, *args): - return _sim_services.DRHDF5_format_specific_shutdown(self, *args) -DRHDF5_swigregister = _sim_services.DRHDF5_swigregister -DRHDF5_swigregister(DRHDF5) - -class ScheduledJobQueue(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ScheduledJobQueue, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ScheduledJobQueue, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_ScheduledJobQueue(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ScheduledJobQueue - __del__ = lambda self: None - - def push(self, *args): - return _sim_services.ScheduledJobQueue_push(self, *args) - - def push_ignore_sim_object(self, *args): - return _sim_services.ScheduledJobQueue_push_ignore_sim_object(self, *args) - - def remove(self, *args): - return _sim_services.ScheduledJobQueue_remove(self, *args) - - def get_curr_index(self, *args): - return _sim_services.ScheduledJobQueue_get_curr_index(self, *args) - - def set_curr_index(self, *args): - return _sim_services.ScheduledJobQueue_set_curr_index(self, *args) - - def reset_curr_index(self, *args): - return _sim_services.ScheduledJobQueue_reset_curr_index(self, *args) - - def size(self, *args): - return _sim_services.ScheduledJobQueue_size(self, *args) - - def empty(self, *args): - return _sim_services.ScheduledJobQueue_empty(self, *args) - - def clear(self, *args): - return _sim_services.ScheduledJobQueue_clear(self, *args) - - def execute_all_jobs(self, *args): - return _sim_services.ScheduledJobQueue_execute_all_jobs(self, *args) - - def write_sched_queue(self, *args): - return _sim_services.ScheduledJobQueue_write_sched_queue(self, *args) - - def write_non_sched_queue(self, *args): - return _sim_services.ScheduledJobQueue_write_non_sched_queue(self, *args) - - def instrument_before(self, *args): - return _sim_services.ScheduledJobQueue_instrument_before(self, *args) - - def instrument_after(self, *args): - return _sim_services.ScheduledJobQueue_instrument_after(self, *args) - - def instrument_remove(self, *args): - return _sim_services.ScheduledJobQueue_instrument_remove(self, *args) - - def top(self, *args): - return _sim_services.ScheduledJobQueue_top(self, *args) - - def get_next_job(self, *args): - return _sim_services.ScheduledJobQueue_get_next_job(self, *args) - - def find_next_job(self, *args): - return _sim_services.ScheduledJobQueue_find_next_job(self, *args) - - def find_job(self, *args): - return _sim_services.ScheduledJobQueue_find_job(self, *args) - - def set_next_job_call_time(self, *args): - return _sim_services.ScheduledJobQueue_set_next_job_call_time(self, *args) - - def get_next_job_call_time(self, *args): - return _sim_services.ScheduledJobQueue_get_next_job_call_time(self, *args) - - def test_next_job_call_time(self, *args): - return _sim_services.ScheduledJobQueue_test_next_job_call_time(self, *args) -ScheduledJobQueue_swigregister = _sim_services.ScheduledJobQueue_swigregister -ScheduledJobQueue_swigregister(ScheduledJobQueue) - -class Scheduler(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Scheduler, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Scheduler, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_Scheduler - __del__ = lambda self: None - - def add_sim_object(self, *args): - return _sim_services.Scheduler_add_sim_object(self, *args) - - def delete_sim_object(self, *args): - return _sim_services.Scheduler_delete_sim_object(self, *args) - - def write_sched_queue(self, *args): - return _sim_services.Scheduler_write_sched_queue(self, *args) - - def write_non_sched_queue(self, *args): - return _sim_services.Scheduler_write_non_sched_queue(self, *args) - - def write_s_job_execution(self, *args): - return _sim_services.Scheduler_write_s_job_execution(self, *args) - - def instrument_job_before(self, *args): - return _sim_services.Scheduler_instrument_job_before(self, *args) - - def instrument_job_after(self, *args): - return _sim_services.Scheduler_instrument_job_after(self, *args) - - def instrument_job_remove(self, *args): - return _sim_services.Scheduler_instrument_job_remove(self, *args) -Scheduler_swigregister = _sim_services.Scheduler_swigregister -Scheduler_swigregister(Scheduler) - -class ThreadBase(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadBase, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ThreadBase, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_ThreadBase - __del__ = lambda self: None - - def get_name(self, *args): - return _sim_services.ThreadBase_get_name(self, *args) - - def set_name(self, *args): - return _sim_services.ThreadBase_set_name(self, *args) - - def get_pthread_id(self, *args): - return _sim_services.ThreadBase_get_pthread_id(self, *args) - - def get_pid(self, *args): - return _sim_services.ThreadBase_get_pid(self, *args) - - def set_pid(self, *args): - return _sim_services.ThreadBase_set_pid(self, *args) - - def cpu_set(self, *args): - return _sim_services.ThreadBase_cpu_set(self, *args) - - def cpu_clr(self, *args): - return _sim_services.ThreadBase_cpu_clr(self, *args) - - def execute_cpu_affinity(self, *args): - return _sim_services.ThreadBase_execute_cpu_affinity(self, *args) - - def set_priority(self, *args): - return _sim_services.ThreadBase_set_priority(self, *args) - - def execute_priority(self, *args): - return _sim_services.ThreadBase_execute_priority(self, *args) - - def create_thread(self, *args): - return _sim_services.ThreadBase_create_thread(self, *args) - - def cancel_thread(self, *args): - return _sim_services.ThreadBase_cancel_thread(self, *args) - - def join_thread(self, *args): - return _sim_services.ThreadBase_join_thread(self, *args) - - def thread_body(self, *args): - return _sim_services.ThreadBase_thread_body(self, *args) - if _newclass: - thread_helper = staticmethod(_sim_services.ThreadBase_thread_helper) - else: - thread_helper = _sim_services.ThreadBase_thread_helper - - def dump(self, *args): - return _sim_services.ThreadBase_dump(self, *args) - - def test_shutdown(self, *args): - return _sim_services.ThreadBase_test_shutdown(self, *args) - - def thread_shutdown(self, *args): - return _sim_services.ThreadBase_thread_shutdown(self, *args) -ThreadBase_swigregister = _sim_services.ThreadBase_swigregister -ThreadBase_swigregister(ThreadBase) - -def ThreadBase_thread_helper(*args): - return _sim_services.ThreadBase_thread_helper(*args) -ThreadBase_thread_helper = _sim_services.ThreadBase_thread_helper - -class SysThread(ThreadBase): - __swig_setmethods__ = {} - for _s in [ThreadBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, SysThread, name, value) - __swig_getmethods__ = {} - for _s in [ThreadBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, SysThread, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_SysThread - __del__ = lambda self: None - if _newclass: - ensureAllShutdown = staticmethod(_sim_services.SysThread_ensureAllShutdown) - else: - ensureAllShutdown = _sim_services.SysThread_ensureAllShutdown -SysThread_swigregister = _sim_services.SysThread_swigregister -SysThread_swigregister(SysThread) - -def SysThread_ensureAllShutdown(*args): - return _sim_services.SysThread_ensureAllShutdown(*args) -SysThread_ensureAllShutdown = _sim_services.SysThread_ensureAllShutdown - -class DRDMutexes(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, DRDMutexes, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, DRDMutexes, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_DRDMutexes(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["dr_go_cv"] = _sim_services.DRDMutexes_dr_go_cv_set - __swig_getmethods__["dr_go_cv"] = _sim_services.DRDMutexes_dr_go_cv_get - if _newclass: - dr_go_cv = _swig_property(_sim_services.DRDMutexes_dr_go_cv_get, _sim_services.DRDMutexes_dr_go_cv_set) - __swig_setmethods__["dr_go_mutex"] = _sim_services.DRDMutexes_dr_go_mutex_set - __swig_getmethods__["dr_go_mutex"] = _sim_services.DRDMutexes_dr_go_mutex_get - if _newclass: - dr_go_mutex = _swig_property(_sim_services.DRDMutexes_dr_go_mutex_get, _sim_services.DRDMutexes_dr_go_mutex_set) - __swig_setmethods__["init_complete_cv"] = _sim_services.DRDMutexes_init_complete_cv_set - __swig_getmethods__["init_complete_cv"] = _sim_services.DRDMutexes_init_complete_cv_get - if _newclass: - init_complete_cv = _swig_property(_sim_services.DRDMutexes_init_complete_cv_get, _sim_services.DRDMutexes_init_complete_cv_set) - __swig_setmethods__["init_complete_mutex"] = _sim_services.DRDMutexes_init_complete_mutex_set - __swig_getmethods__["init_complete_mutex"] = _sim_services.DRDMutexes_init_complete_mutex_get - if _newclass: - init_complete_mutex = _swig_property(_sim_services.DRDMutexes_init_complete_mutex_get, _sim_services.DRDMutexes_init_complete_mutex_set) - __swig_setmethods__["cancelled"] = _sim_services.DRDMutexes_cancelled_set - __swig_getmethods__["cancelled"] = _sim_services.DRDMutexes_cancelled_get - if _newclass: - cancelled = _swig_property(_sim_services.DRDMutexes_cancelled_get, _sim_services.DRDMutexes_cancelled_set) - __swig_destroy__ = _sim_services.delete_DRDMutexes - __del__ = lambda self: None -DRDMutexes_swigregister = _sim_services.DRDMutexes_swigregister -DRDMutexes_swigregister(DRDMutexes) - -class DRDWriterThread(SysThread): - __swig_setmethods__ = {} - for _s in [SysThread]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, DRDWriterThread, name, value) - __swig_getmethods__ = {} - for _s in [SysThread]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, DRDWriterThread, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_DRDWriterThread(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def thread_body(self, *args): - return _sim_services.DRDWriterThread_thread_body(self, *args) - - def dump(self, *args): - return _sim_services.DRDWriterThread_dump(self, *args) - __swig_destroy__ = _sim_services.delete_DRDWriterThread - __del__ = lambda self: None -DRDWriterThread_swigregister = _sim_services.DRDWriterThread_swigregister -DRDWriterThread_swigregister(DRDWriterThread) - -class DataRecordDispatcher(Scheduler): - __swig_setmethods__ = {} - for _s in [Scheduler]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, DataRecordDispatcher, name, value) - __swig_getmethods__ = {} - for _s in [Scheduler]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, DataRecordDispatcher, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_DataRecordDispatcher(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_DataRecordDispatcher - __del__ = lambda self: None - - def remove_files(self, *args): - return _sim_services.DataRecordDispatcher_remove_files(self, *args) - - def init(self, *args): - return _sim_services.DataRecordDispatcher_init(self, *args) - - def init_groups(self, *args): - return _sim_services.DataRecordDispatcher_init_groups(self, *args) - - def add_group(self, *args): - return _sim_services.DataRecordDispatcher_add_group(self, *args) - - def remove_group(self, *args): - return _sim_services.DataRecordDispatcher_remove_group(self, *args) - - def remove_all_groups(self, *args): - return _sim_services.DataRecordDispatcher_remove_all_groups(self, *args) - - def get_group(self, *args): - return _sim_services.DataRecordDispatcher_get_group(self, *args) - - def signal_thread(self, *args): - return _sim_services.DataRecordDispatcher_signal_thread(self, *args) - - def preload_checkpoint(self, *args): - return _sim_services.DataRecordDispatcher_preload_checkpoint(self, *args) - - def restart(self, *args): - return _sim_services.DataRecordDispatcher_restart(self, *args) - - def shutdown(self, *args): - return _sim_services.DataRecordDispatcher_shutdown(self, *args) - - def enable(self, *args): - return _sim_services.DataRecordDispatcher_enable(self, *args) - - def disable(self, *args): - return _sim_services.DataRecordDispatcher_disable(self, *args) - - def record_now_group(self, *args): - return _sim_services.DataRecordDispatcher_record_now_group(self, *args) - - def set_group_max_file_size(self, *args): - return _sim_services.DataRecordDispatcher_set_group_max_file_size(self, *args) - - def set_max_file_size(self, *args): - return _sim_services.DataRecordDispatcher_set_max_file_size(self, *args) - - def add_sim_object(self, *args): - return _sim_services.DataRecordDispatcher_add_sim_object(self, *args) - - def write_s_job_execution(self, *args): - return _sim_services.DataRecordDispatcher_write_s_job_execution(self, *args) - - def instrument_job_before(self, *args): - return _sim_services.DataRecordDispatcher_instrument_job_before(self, *args) - - def instrument_job_after(self, *args): - return _sim_services.DataRecordDispatcher_instrument_job_after(self, *args) - - def instrument_job_remove(self, *args): - return _sim_services.DataRecordDispatcher_instrument_job_remove(self, *args) - __swig_getmethods__["drd_writer_thread"] = _sim_services.DataRecordDispatcher_drd_writer_thread_get - if _newclass: - drd_writer_thread = _swig_property(_sim_services.DataRecordDispatcher_drd_writer_thread_get) -DataRecordDispatcher_swigregister = _sim_services.DataRecordDispatcher_swigregister -DataRecordDispatcher_swigregister(DataRecordDispatcher) - - -def dr_remove_files(*args): - return _sim_services.dr_remove_files(*args) -dr_remove_files = _sim_services.dr_remove_files - -def dr_enable(*args): - return _sim_services.dr_enable(*args) -dr_enable = _sim_services.dr_enable - -def dr_disable(*args): - return _sim_services.dr_disable(*args) -dr_disable = _sim_services.dr_disable - -def dr_enable_group(*args): - return _sim_services.dr_enable_group(*args) -dr_enable_group = _sim_services.dr_enable_group - -def dr_disable_group(*args): - return _sim_services.dr_disable_group(*args) -dr_disable_group = _sim_services.dr_disable_group - -def dr_record_now_group(*args): - return _sim_services.dr_record_now_group(*args) -dr_record_now_group = _sim_services.dr_record_now_group - -def dr_set_max_file_size(*args): - return _sim_services.dr_set_max_file_size(*args) -dr_set_max_file_size = _sim_services.dr_set_max_file_size - -def remove_all_data_record_groups(*args): - return _sim_services.remove_all_data_record_groups(*args) -remove_all_data_record_groups = _sim_services.remove_all_data_record_groups - -def set_max_size_record_group(*args): - return _sim_services.set_max_size_record_group(*args) -set_max_size_record_group = _sim_services.set_max_size_record_group - -def add_data_record_group(*args): - return _sim_services.add_data_record_group(*args) -add_data_record_group = _sim_services.add_data_record_group - -def remove_data_record_group(*args): - return _sim_services.remove_data_record_group(*args) -remove_data_record_group = _sim_services.remove_data_record_group - -def get_data_record_group(*args): - return _sim_services.get_data_record_group(*args) -get_data_record_group = _sim_services.get_data_record_group -class DebugPause(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, DebugPause, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, DebugPause, name) - __repr__ = _swig_repr - __swig_setmethods__["debug_pause_flag"] = _sim_services.DebugPause_debug_pause_flag_set - __swig_getmethods__["debug_pause_flag"] = _sim_services.DebugPause_debug_pause_flag_get - if _newclass: - debug_pause_flag = _swig_property(_sim_services.DebugPause_debug_pause_flag_get, _sim_services.DebugPause_debug_pause_flag_set) - - def __init__(self, *args): - this = _sim_services.new_DebugPause(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def debug_pause(self, *args): - return _sim_services.DebugPause_debug_pause(self, *args) - - def debug_signal(self, *args): - return _sim_services.DebugPause_debug_signal(self, *args) - - def debug_pause_on(self, *args): - return _sim_services.DebugPause_debug_pause_on(self, *args) - - def debug_pause_off(self, *args): - return _sim_services.DebugPause_debug_pause_off(self, *args) - __swig_destroy__ = _sim_services.delete_DebugPause - __del__ = lambda self: None -DebugPause_swigregister = _sim_services.DebugPause_swigregister -DebugPause_swigregister(DebugPause) - - -def debug_pause_on(*args): - return _sim_services.debug_pause_on(*args) -debug_pause_on = _sim_services.debug_pause_on - -def debug_pause_off(*args): - return _sim_services.debug_pause_off(*args) -debug_pause_off = _sim_services.debug_pause_off - -def debug_signal(*args): - return _sim_services.debug_signal(*args) -debug_signal = _sim_services.debug_signal -class EchoJobs(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, EchoJobs, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, EchoJobs, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_EchoJobs(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def echo_job(self, *args): - return _sim_services.EchoJobs_echo_job(self, *args) - - def echojobs_on(self, *args): - return _sim_services.EchoJobs_echojobs_on(self, *args) - - def echojobs_off(self, *args): - return _sim_services.EchoJobs_echojobs_off(self, *args) - __swig_destroy__ = _sim_services.delete_EchoJobs - __del__ = lambda self: None -EchoJobs_swigregister = _sim_services.EchoJobs_swigregister -EchoJobs_swigregister(EchoJobs) - - -def echo_jobs_on(*args): - return _sim_services.echo_jobs_on(*args) -echo_jobs_on = _sim_services.echo_jobs_on - -def echo_jobs_off(*args): - return _sim_services.echo_jobs_off(*args) -echo_jobs_off = _sim_services.echo_jobs_off -class Environment(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Environment, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Environment, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_Environment(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def add_var(self, *args): - return _sim_services.Environment_add_var(self, *args) - - def get_var(self, *args): - return _sim_services.Environment_get_var(self, *args) - - def print_vars(self, *args): - return _sim_services.Environment_print_vars(self, *args) - __swig_destroy__ = _sim_services.delete_Environment - __del__ = lambda self: None -Environment_swigregister = _sim_services.Environment_swigregister -Environment_swigregister(Environment) - - -def env_add_var(*args): - return _sim_services.env_add_var(*args) -env_add_var = _sim_services.env_add_var - -def get_trick_env(*args): - return _sim_services.get_trick_env(*args) -get_trick_env = _sim_services.get_trick_env - -def env_get_var(*args): - return _sim_services.env_get_var(*args) -env_get_var = _sim_services.env_get_var - -def env_print_vars(*args): - return _sim_services.env_print_vars(*args) -env_print_vars = _sim_services.env_print_vars -TT_MUTEX = _sim_services.TT_MUTEX -TT_FLAG = _sim_services.TT_FLAG -TT_EVENTFD = _sim_services.TT_EVENTFD -TT_FUTEX = _sim_services.TT_FUTEX -class ThreadTriggerBase(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerBase, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerBase, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_setmethods__["tt_type"] = _sim_services.ThreadTriggerBase_tt_type_set - __swig_getmethods__["tt_type"] = _sim_services.ThreadTriggerBase_tt_type_get - if _newclass: - tt_type = _swig_property(_sim_services.ThreadTriggerBase_tt_type_get, _sim_services.ThreadTriggerBase_tt_type_set) - __swig_destroy__ = _sim_services.delete_ThreadTriggerBase - __del__ = lambda self: None - - def init(self, *args): - return _sim_services.ThreadTriggerBase_init(self, *args) - - def fire(self, *args): - return _sim_services.ThreadTriggerBase_fire(self, *args) - - def wait(self, *args): - return _sim_services.ThreadTriggerBase_wait(self, *args) - - def dump(self, *args): - return _sim_services.ThreadTriggerBase_dump(self, *args) -ThreadTriggerBase_swigregister = _sim_services.ThreadTriggerBase_swigregister -ThreadTriggerBase_swigregister(ThreadTriggerBase) - -class ThreadTriggerMutex(ThreadTriggerBase): - __swig_setmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerMutex, name, value) - __swig_getmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerMutex, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_ThreadTriggerMutex(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def init(self, *args): - return _sim_services.ThreadTriggerMutex_init(self, *args) - - def fire(self, *args): - return _sim_services.ThreadTriggerMutex_fire(self, *args) - - def wait(self, *args): - return _sim_services.ThreadTriggerMutex_wait(self, *args) - - def dump(self, *args): - return _sim_services.ThreadTriggerMutex_dump(self, *args) - __swig_destroy__ = _sim_services.delete_ThreadTriggerMutex - __del__ = lambda self: None -ThreadTriggerMutex_swigregister = _sim_services.ThreadTriggerMutex_swigregister -ThreadTriggerMutex_swigregister(ThreadTriggerMutex) - -class ThreadTriggerFlag(ThreadTriggerBase): - __swig_setmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerFlag, name, value) - __swig_getmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerFlag, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_ThreadTriggerFlag(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def fire(self, *args): - return _sim_services.ThreadTriggerFlag_fire(self, *args) - - def wait(self, *args): - return _sim_services.ThreadTriggerFlag_wait(self, *args) - - def dump(self, *args): - return _sim_services.ThreadTriggerFlag_dump(self, *args) - __swig_destroy__ = _sim_services.delete_ThreadTriggerFlag - __del__ = lambda self: None -ThreadTriggerFlag_swigregister = _sim_services.ThreadTriggerFlag_swigregister -ThreadTriggerFlag_swigregister(ThreadTriggerFlag) - -class ThreadTriggerEventFD(ThreadTriggerBase): - __swig_setmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerEventFD, name, value) - __swig_getmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerEventFD, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_ThreadTriggerEventFD(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def fire(self, *args): - return _sim_services.ThreadTriggerEventFD_fire(self, *args) - - def wait(self, *args): - return _sim_services.ThreadTriggerEventFD_wait(self, *args) - - def dump(self, *args): - return _sim_services.ThreadTriggerEventFD_dump(self, *args) - __swig_destroy__ = _sim_services.delete_ThreadTriggerEventFD - __del__ = lambda self: None -ThreadTriggerEventFD_swigregister = _sim_services.ThreadTriggerEventFD_swigregister -ThreadTriggerEventFD_swigregister(ThreadTriggerEventFD) - -class ThreadTriggerFutex(ThreadTriggerBase): - __swig_setmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerFutex, name, value) - __swig_getmethods__ = {} - for _s in [ThreadTriggerBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerFutex, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_ThreadTriggerFutex(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def fire(self, *args): - return _sim_services.ThreadTriggerFutex_fire(self, *args) - - def wait(self, *args): - return _sim_services.ThreadTriggerFutex_wait(self, *args) - - def dump(self, *args): - return _sim_services.ThreadTriggerFutex_dump(self, *args) - __swig_destroy__ = _sim_services.delete_ThreadTriggerFutex - __del__ = lambda self: None -ThreadTriggerFutex_swigregister = _sim_services.ThreadTriggerFutex_swigregister -ThreadTriggerFutex_swigregister(ThreadTriggerFutex) - -class ThreadTriggerContainer(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ThreadTriggerContainer, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ThreadTriggerContainer, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_ThreadTriggerContainer(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def getThreadTrigger(self, *args): - return _sim_services.ThreadTriggerContainer_getThreadTrigger(self, *args) - - def setThreadTrigger(self, *args): - return _sim_services.ThreadTriggerContainer_setThreadTrigger(self, *args) - __swig_destroy__ = _sim_services.delete_ThreadTriggerContainer - __del__ = lambda self: None -ThreadTriggerContainer_swigregister = _sim_services.ThreadTriggerContainer_swigregister -ThreadTriggerContainer_swigregister(ThreadTriggerContainer) - -PROCESS_TYPE_SCHEDULED = _sim_services.PROCESS_TYPE_SCHEDULED -PROCESS_TYPE_ASYNC_CHILD = _sim_services.PROCESS_TYPE_ASYNC_CHILD -PROCESS_TYPE_AMF_CHILD = _sim_services.PROCESS_TYPE_AMF_CHILD -class Threads(ThreadBase): - __swig_setmethods__ = {} - for _s in [ThreadBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, Threads, name, value) - __swig_getmethods__ = {} - for _s in [ThreadBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, Threads, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_Threads(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def set_pthread_id(self, *args): - return _sim_services.Threads_set_pthread_id(self, *args) - - def thread_body(self, *args): - return _sim_services.Threads_thread_body(self, *args) - - def set_enabled(self, *args): - return _sim_services.Threads_set_enabled(self, *args) - - def set_process_type(self, *args): - return _sim_services.Threads_set_process_type(self, *args) - - def set_amf_cycle(self, *args): - return _sim_services.Threads_set_amf_cycle(self, *args) - - def time_tic_changed(self, *args): - return _sim_services.Threads_time_tic_changed(self, *args) - - def set_async_wait(self, *args): - return _sim_services.Threads_set_async_wait(self, *args) - - def clear_scheduled_queues(self, *args): - return _sim_services.Threads_clear_scheduled_queues(self, *args) - - def dump(self, *args): - return _sim_services.Threads_dump(self, *args) - __swig_setmethods__["enabled"] = _sim_services.Threads_enabled_set - __swig_getmethods__["enabled"] = _sim_services.Threads_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.Threads_enabled_get, _sim_services.Threads_enabled_set) - __swig_setmethods__["thread_id"] = _sim_services.Threads_thread_id_set - __swig_getmethods__["thread_id"] = _sim_services.Threads_thread_id_get - if _newclass: - thread_id = _swig_property(_sim_services.Threads_thread_id_get, _sim_services.Threads_thread_id_set) - __swig_setmethods__["curr_time_tics"] = _sim_services.Threads_curr_time_tics_set - __swig_getmethods__["curr_time_tics"] = _sim_services.Threads_curr_time_tics_get - if _newclass: - curr_time_tics = _swig_property(_sim_services.Threads_curr_time_tics_get, _sim_services.Threads_curr_time_tics_set) - __swig_setmethods__["amf_cycle"] = _sim_services.Threads_amf_cycle_set - __swig_getmethods__["amf_cycle"] = _sim_services.Threads_amf_cycle_get - if _newclass: - amf_cycle = _swig_property(_sim_services.Threads_amf_cycle_get, _sim_services.Threads_amf_cycle_set) - __swig_setmethods__["amf_cycle_tics"] = _sim_services.Threads_amf_cycle_tics_set - __swig_getmethods__["amf_cycle_tics"] = _sim_services.Threads_amf_cycle_tics_get - if _newclass: - amf_cycle_tics = _swig_property(_sim_services.Threads_amf_cycle_tics_get, _sim_services.Threads_amf_cycle_tics_set) - __swig_setmethods__["amf_next_tics"] = _sim_services.Threads_amf_next_tics_set - __swig_getmethods__["amf_next_tics"] = _sim_services.Threads_amf_next_tics_get - if _newclass: - amf_next_tics = _swig_property(_sim_services.Threads_amf_next_tics_get, _sim_services.Threads_amf_next_tics_set) - __swig_setmethods__["job_queue"] = _sim_services.Threads_job_queue_set - __swig_getmethods__["job_queue"] = _sim_services.Threads_job_queue_get - if _newclass: - job_queue = _swig_property(_sim_services.Threads_job_queue_get, _sim_services.Threads_job_queue_set) - __swig_setmethods__["top_of_frame_queue"] = _sim_services.Threads_top_of_frame_queue_set - __swig_getmethods__["top_of_frame_queue"] = _sim_services.Threads_top_of_frame_queue_get - if _newclass: - top_of_frame_queue = _swig_property(_sim_services.Threads_top_of_frame_queue_get, _sim_services.Threads_top_of_frame_queue_set) - __swig_setmethods__["end_of_frame_queue"] = _sim_services.Threads_end_of_frame_queue_set - __swig_getmethods__["end_of_frame_queue"] = _sim_services.Threads_end_of_frame_queue_get - if _newclass: - end_of_frame_queue = _swig_property(_sim_services.Threads_end_of_frame_queue_get, _sim_services.Threads_end_of_frame_queue_set) - __swig_setmethods__["curr_job"] = _sim_services.Threads_curr_job_set - __swig_getmethods__["curr_job"] = _sim_services.Threads_curr_job_get - if _newclass: - curr_job = _swig_property(_sim_services.Threads_curr_job_get, _sim_services.Threads_curr_job_set) - __swig_setmethods__["rt_nap"] = _sim_services.Threads_rt_nap_set - __swig_getmethods__["rt_nap"] = _sim_services.Threads_rt_nap_get - if _newclass: - rt_nap = _swig_property(_sim_services.Threads_rt_nap_get, _sim_services.Threads_rt_nap_set) - __swig_setmethods__["process_type"] = _sim_services.Threads_process_type_set - __swig_getmethods__["process_type"] = _sim_services.Threads_process_type_get - if _newclass: - process_type = _swig_property(_sim_services.Threads_process_type_get, _sim_services.Threads_process_type_set) - __swig_setmethods__["child_complete"] = _sim_services.Threads_child_complete_set - __swig_getmethods__["child_complete"] = _sim_services.Threads_child_complete_get - if _newclass: - child_complete = _swig_property(_sim_services.Threads_child_complete_get, _sim_services.Threads_child_complete_set) - __swig_setmethods__["running"] = _sim_services.Threads_running_set - __swig_getmethods__["running"] = _sim_services.Threads_running_get - if _newclass: - running = _swig_property(_sim_services.Threads_running_get, _sim_services.Threads_running_set) - __swig_setmethods__["trigger_container"] = _sim_services.Threads_trigger_container_set - __swig_getmethods__["trigger_container"] = _sim_services.Threads_trigger_container_get - if _newclass: - trigger_container = _swig_property(_sim_services.Threads_trigger_container_get, _sim_services.Threads_trigger_container_set) - __swig_setmethods__["shutdown_wait_async"] = _sim_services.Threads_shutdown_wait_async_set - __swig_getmethods__["shutdown_wait_async"] = _sim_services.Threads_shutdown_wait_async_get - if _newclass: - shutdown_wait_async = _swig_property(_sim_services.Threads_shutdown_wait_async_get, _sim_services.Threads_shutdown_wait_async_set) - __swig_destroy__ = _sim_services.delete_Threads - __del__ = lambda self: None -Threads_swigregister = _sim_services.Threads_swigregister -Threads_swigregister(Threads) - -NoCmd = _sim_services.NoCmd -FreezeCmd = _sim_services.FreezeCmd -RunCmd = _sim_services.RunCmd -ExitCmd = _sim_services.ExitCmd -Initialization = _sim_services.Initialization -Freeze = _sim_services.Freeze -Step = _sim_services.Step -Run = _sim_services.Run -ExitMode = _sim_services.ExitMode -class Executive(Scheduler): - __swig_setmethods__ = {} - for _s in [Scheduler]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, Executive, name, value) - __swig_getmethods__ = {} - for _s in [Scheduler]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, Executive, name) - __repr__ = _swig_repr - - def get_except_return(self, *args): - return _sim_services.Executive_get_except_return(self, *args) - - def __init__(self, *args): - this = _sim_services.new_Executive(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_Executive - __del__ = lambda self: None - - def get_all_jobs_vector(self, *args): - return _sim_services.Executive_get_all_jobs_vector(self, *args) - - def get_attach_debugger(self, *args): - return _sim_services.Executive_get_attach_debugger(self, *args) - - def get_current_version(self, *args): - return _sim_services.Executive_get_current_version(self, *args) - - def get_debugger_command(self, *args): - return _sim_services.Executive_get_debugger_command(self, *args) - - def get_exec_command(self, *args): - return _sim_services.Executive_get_exec_command(self, *args) - - def get_enable_freeze(self, *args): - return _sim_services.Executive_get_enable_freeze(self, *args) - - def get_freeze_command(self, *args): - return _sim_services.Executive_get_freeze_command(self, *args) - - def get_freeze_on_frame_boundary(self, *args): - return _sim_services.Executive_get_freeze_on_frame_boundary(self, *args) - - def get_freeze_frame(self, *args): - return _sim_services.Executive_get_freeze_frame(self, *args) - - def get_freeze_frame_tics(self, *args): - return _sim_services.Executive_get_freeze_frame_tics(self, *args) - - def get_mode(self, *args): - return _sim_services.Executive_get_mode(self, *args) - - def get_num_threads(self, *args): - return _sim_services.Executive_get_num_threads(self, *args) - - def get_old_time_tic_value(self, *args): - return _sim_services.Executive_get_old_time_tic_value(self, *args) - - def get_rt_nap(self, *args): - return _sim_services.Executive_get_rt_nap(self, *args) - - def get_scheduled_start_index(self, *args): - return _sim_services.Executive_get_scheduled_start_index(self, *args) - - def get_sim_objects(self, *args): - return _sim_services.Executive_get_sim_objects(self, *args) - - def get_sim_object_by_name(self, *args): - return _sim_services.Executive_get_sim_object_by_name(self, *args) - - def get_software_frame(self, *args): - return _sim_services.Executive_get_software_frame(self, *args) - - def get_software_frame_tics(self, *args): - return _sim_services.Executive_get_software_frame_tics(self, *args) - - def get_frame_count(self, *args): - return _sim_services.Executive_get_frame_count(self, *args) - - def get_freeze_frame_count(self, *args): - return _sim_services.Executive_get_freeze_frame_count(self, *args) - - def get_pthread_id(self, *args): - return _sim_services.Executive_get_pthread_id(self, *args) - - def get_stack_trace(self, *args): - return _sim_services.Executive_get_stack_trace(self, *args) - - def get_terminate_time(self, *args): - return _sim_services.Executive_get_terminate_time(self, *args) - - def get_thread_amf_cycle_time(self, *args): - return _sim_services.Executive_get_thread_amf_cycle_time(self, *args) - - def get_time_tic_value(self, *args): - return _sim_services.Executive_get_time_tic_value(self, *args) - - def get_time_tics(self, *args): - return _sim_services.Executive_get_time_tics(self, *args) - - def get_freeze_time_tics(self, *args): - return _sim_services.Executive_get_freeze_time_tics(self, *args) - - def get_trap_sigbus(self, *args): - return _sim_services.Executive_get_trap_sigbus(self, *args) - - def get_trap_sigfpe(self, *args): - return _sim_services.Executive_get_trap_sigfpe(self, *args) - - def get_trap_sigsegv(self, *args): - return _sim_services.Executive_get_trap_sigsegv(self, *args) - - def get_trap_sigabrt(self, *args): - return _sim_services.Executive_get_trap_sigabrt(self, *args) - - def get_trap_sigchld(self, *args): - return _sim_services.Executive_get_trap_sigchld(self, *args) - - def set_attach_debugger(self, *args): - return _sim_services.Executive_set_attach_debugger(self, *args) - - def set_debugger_command(self, *args): - return _sim_services.Executive_set_debugger_command(self, *args) - - def set_enable_freeze(self, *args): - return _sim_services.Executive_set_enable_freeze(self, *args) - - def set_freeze_command(self, *args): - return _sim_services.Executive_set_freeze_command(self, *args) - - def set_freeze_on_frame_boundary(self, *args): - return _sim_services.Executive_set_freeze_on_frame_boundary(self, *args) - - def set_freeze_frame(self, *args): - return _sim_services.Executive_set_freeze_frame(self, *args) - - def set_exec_command(self, *args): - return _sim_services.Executive_set_exec_command(self, *args) - - def set_rt_nap(self, *args): - return _sim_services.Executive_set_rt_nap(self, *args) - - def set_software_frame(self, *args): - return _sim_services.Executive_set_software_frame(self, *args) - - def set_stack_trace(self, *args): - return _sim_services.Executive_set_stack_trace(self, *args) - - def set_time(self, *args): - return _sim_services.Executive_set_time(self, *args) - - def set_time_tics(self, *args): - return _sim_services.Executive_set_time_tics(self, *args) - - def set_time_tic_value(self, *args): - return _sim_services.Executive_set_time_tic_value(self, *args) - - def set_terminate_time(self, *args): - return _sim_services.Executive_set_terminate_time(self, *args) - - def set_trap_sigbus(self, *args): - return _sim_services.Executive_set_trap_sigbus(self, *args) - - def set_trap_sigfpe(self, *args): - return _sim_services.Executive_set_trap_sigfpe(self, *args) - - def set_trap_sigsegv(self, *args): - return _sim_services.Executive_set_trap_sigsegv(self, *args) - - def set_trap_sigabrt(self, *args): - return _sim_services.Executive_set_trap_sigabrt(self, *args) - - def set_trap_sigchld(self, *args): - return _sim_services.Executive_set_trap_sigchld(self, *args) - - def get_sim_time(self, *args): - return _sim_services.Executive_get_sim_time(self, *args) - - def get_process_id(self, *args): - return _sim_services.Executive_get_process_id(self, *args) - - def get_freeze_job(self, *args): - return _sim_services.Executive_get_freeze_job(self, *args) - - def get_job(self, *args): - return _sim_services.Executive_get_job(self, *args) - - def get_curr_job(self, *args): - return _sim_services.Executive_get_curr_job(self, *args) - - def get_job_cycle(self, *args): - return _sim_services.Executive_get_job_cycle(self, *args) - - def set_job_onoff(self, *args): - return _sim_services.Executive_set_job_onoff(self, *args) - - def set_job_cycle(self, *args): - return _sim_services.Executive_set_job_cycle(self, *args) - - def set_sim_object_jobs_onoff(self, *args): - return _sim_services.Executive_set_sim_object_jobs_onoff(self, *args) - - def set_sim_object_onoff(self, *args): - return _sim_services.Executive_set_sim_object_onoff(self, *args) - - def get_sim_object_onoff(self, *args): - return _sim_services.Executive_get_sim_object_onoff(self, *args) - - def set_version_date_tag(self, *args): - return _sim_services.Executive_set_version_date_tag(self, *args) - - def set_build_date(self, *args): - return _sim_services.Executive_set_build_date(self, *args) - - def set_current_version(self, *args): - return _sim_services.Executive_set_current_version(self, *args) - - def process_sim_args(self, *args): - return _sim_services.Executive_process_sim_args(self, *args) - - def init(self, *args): - return _sim_services.Executive_init(self, *args) - - def call_default_data(self, *args): - return _sim_services.Executive_call_default_data(self, *args) - - def call_input_processor(self, *args): - return _sim_services.Executive_call_input_processor(self, *args) - - def call_initialization(self, *args): - return _sim_services.Executive_call_initialization(self, *args) - - def checkpoint(self, *args): - return _sim_services.Executive_checkpoint(self, *args) - - def post_checkpoint(self, *args): - return _sim_services.Executive_post_checkpoint(self, *args) - - def restart(self, *args): - return _sim_services.Executive_restart(self, *args) - - def clear_scheduled_queues(self, *args): - return _sim_services.Executive_clear_scheduled_queues(self, *args) - - def write_s_run_summary(self, *args): - return _sim_services.Executive_write_s_run_summary(self, *args) - - def create_threads(self, *args): - return _sim_services.Executive_create_threads(self, *args) - - def loop(self, *args): - return _sim_services.Executive_loop(self, *args) - - def loop_multi_thread(self, *args): - return _sim_services.Executive_loop_multi_thread(self, *args) - - def loop_single_thread(self, *args): - return _sim_services.Executive_loop_single_thread(self, *args) - - def async_freeze_to_exec_command(self, *args): - return _sim_services.Executive_async_freeze_to_exec_command(self, *args) - - def sched_freeze_to_exec_command(self, *args): - return _sim_services.Executive_sched_freeze_to_exec_command(self, *args) - - def advance_sim_time(self, *args): - return _sim_services.Executive_advance_sim_time(self, *args) - - def thread_sync(self, *args): - return _sim_services.Executive_thread_sync(self, *args) - - def scheduled_thread_sync(self, *args): - return _sim_services.Executive_scheduled_thread_sync(self, *args) - - def init_freeze_scheduled(self, *args): - return _sim_services.Executive_init_freeze_scheduled(self, *args) - - def freeze_loop(self, *args): - return _sim_services.Executive_freeze_loop(self, *args) - - def shutdown(self, *args): - return _sim_services.Executive_shutdown(self, *args) - - def add_scheduled_job_class(self, *args): - return _sim_services.Executive_add_scheduled_job_class(self, *args) - - def add_sim_object(self, *args): - return _sim_services.Executive_add_sim_object(self, *args) - - def add_jobs_to_queue(self, *args): - return _sim_services.Executive_add_jobs_to_queue(self, *args) - - def add_job_to_queue(self, *args): - return _sim_services.Executive_add_job_to_queue(self, *args) - - def delete_sim_object(self, *args): - return _sim_services.Executive_delete_sim_object(self, *args) - - def remove_jobs(self, *args): - return _sim_services.Executive_remove_jobs(self, *args) - - def add_depends_on_job(self, *args): - return _sim_services.Executive_add_depends_on_job(self, *args) - - def check_all_jobs_handled(self, *args): - return _sim_services.Executive_check_all_jobs_handled(self, *args) - - def check_all_job_cycle_times(self, *args): - return _sim_services.Executive_check_all_job_cycle_times(self, *args) - - def init_signal_handlers(self, *args): - return _sim_services.Executive_init_signal_handlers(self, *args) - - def signal_handler(self, *args): - return _sim_services.Executive_signal_handler(self, *args) - - def ctrl_c_handler(self, *args): - return _sim_services.Executive_ctrl_c_handler(self, *args) - - def term_handler(self, *args): - return _sim_services.Executive_term_handler(self, *args) - - def usr1_handler(self, *args): - return _sim_services.Executive_usr1_handler(self, *args) - - def fpe_handler(self, *args): - return _sim_services.Executive_fpe_handler(self, *args) - - def get_thread(self, *args): - return _sim_services.Executive_get_thread(self, *args) - - def set_thread_enabled(self, *args): - return _sim_services.Executive_set_thread_enabled(self, *args) - - def set_thread_process_type(self, *args): - return _sim_services.Executive_set_thread_process_type(self, *args) - - def set_thread_amf_cycle_time(self, *args): - return _sim_services.Executive_set_thread_amf_cycle_time(self, *args) - - def set_thread_async_wait(self, *args): - return _sim_services.Executive_set_thread_async_wait(self, *args) - - def set_thread_rt_semaphores(self, *args): - return _sim_services.Executive_set_thread_rt_semaphores(self, *args) - - def set_thread_priority(self, *args): - return _sim_services.Executive_set_thread_priority(self, *args) - - def set_thread_cpu_affinity(self, *args): - return _sim_services.Executive_set_thread_cpu_affinity(self, *args) - - def run(self, *args): - return _sim_services.Executive_run(self, *args) - - def freeze(self, *args): - return _sim_services.Executive_freeze(self, *args) - - def stop(self, *args): - return _sim_services.Executive_stop(self, *args) - - def instrument_job_before(self, *args): - return _sim_services.Executive_instrument_job_before(self, *args) - - def instrument_job_after(self, *args): - return _sim_services.Executive_instrument_job_after(self, *args) - - def instrument_job_remove(self, *args): - return _sim_services.Executive_instrument_job_remove(self, *args) - - def write_s_job_execution(self, *args): - return _sim_services.Executive_write_s_job_execution(self, *args) - - def register_scheduler(self, *args): - return _sim_services.Executive_register_scheduler(self, *args) - - def exec_terminate(self, *args): - return _sim_services.Executive_exec_terminate(self, *args) -Executive_swigregister = _sim_services.Executive_swigregister -Executive_swigregister(Executive) - -class ExecutiveException(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ExecutiveException, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ExecutiveException, name) - __repr__ = _swig_repr - __swig_setmethods__["ret_code"] = _sim_services.ExecutiveException_ret_code_set - __swig_getmethods__["ret_code"] = _sim_services.ExecutiveException_ret_code_get - if _newclass: - ret_code = _swig_property(_sim_services.ExecutiveException_ret_code_get, _sim_services.ExecutiveException_ret_code_set) - __swig_setmethods__["file"] = _sim_services.ExecutiveException_file_set - __swig_getmethods__["file"] = _sim_services.ExecutiveException_file_get - if _newclass: - file = _swig_property(_sim_services.ExecutiveException_file_get, _sim_services.ExecutiveException_file_set) - __swig_setmethods__["message"] = _sim_services.ExecutiveException_message_set - __swig_getmethods__["message"] = _sim_services.ExecutiveException_message_get - if _newclass: - message = _swig_property(_sim_services.ExecutiveException_message_get, _sim_services.ExecutiveException_message_set) - - def __init__(self, *args): - this = _sim_services.new_ExecutiveException(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ExecutiveException - __del__ = lambda self: None - - def what(self, *args): - return _sim_services.ExecutiveException_what(self, *args) -ExecutiveException_swigregister = _sim_services.ExecutiveException_swigregister -ExecutiveException_swigregister(ExecutiveException) - - -def exec_get_attach_debugger(*args): - return _sim_services.exec_get_attach_debugger(*args) -exec_get_attach_debugger = _sim_services.exec_get_attach_debugger - -def exec_get_current_version(*args): - return _sim_services.exec_get_current_version(*args) -exec_get_current_version = _sim_services.exec_get_current_version - -def exec_get_debugger_command(*args): - return _sim_services.exec_get_debugger_command(*args) -exec_get_debugger_command = _sim_services.exec_get_debugger_command - -def exec_get_enable_freeze(*args): - return _sim_services.exec_get_enable_freeze(*args) -exec_get_enable_freeze = _sim_services.exec_get_enable_freeze - -def exec_get_exec_command(*args): - return _sim_services.exec_get_exec_command(*args) -exec_get_exec_command = _sim_services.exec_get_exec_command - -def exec_get_frame_count(*args): - return _sim_services.exec_get_frame_count(*args) -exec_get_frame_count = _sim_services.exec_get_frame_count - -def exec_get_freeze_frame(*args): - return _sim_services.exec_get_freeze_frame(*args) -exec_get_freeze_frame = _sim_services.exec_get_freeze_frame - -def exec_get_freeze_frame_count(*args): - return _sim_services.exec_get_freeze_frame_count(*args) -exec_get_freeze_frame_count = _sim_services.exec_get_freeze_frame_count - -def exec_get_freeze_command(*args): - return _sim_services.exec_get_freeze_command(*args) -exec_get_freeze_command = _sim_services.exec_get_freeze_command - -def exec_get_freeze_on_frame_boundary(*args): - return _sim_services.exec_get_freeze_on_frame_boundary(*args) -exec_get_freeze_on_frame_boundary = _sim_services.exec_get_freeze_on_frame_boundary - -def exec_get_freeze_frame_tics(*args): - return _sim_services.exec_get_freeze_frame_tics(*args) -exec_get_freeze_frame_tics = _sim_services.exec_get_freeze_frame_tics - -def exec_get_freeze_time_tics(*args): - return _sim_services.exec_get_freeze_time_tics(*args) -exec_get_freeze_time_tics = _sim_services.exec_get_freeze_time_tics - -def exec_get_job_cycle(*args): - return _sim_services.exec_get_job_cycle(*args) -exec_get_job_cycle = _sim_services.exec_get_job_cycle - -def exec_get_mode(*args): - return _sim_services.exec_get_mode(*args) -exec_get_mode = _sim_services.exec_get_mode - -def exec_get_num_threads(*args): - return _sim_services.exec_get_num_threads(*args) -exec_get_num_threads = _sim_services.exec_get_num_threads - -def exec_get_old_time_tic_value(*args): - return _sim_services.exec_get_old_time_tic_value(*args) -exec_get_old_time_tic_value = _sim_services.exec_get_old_time_tic_value - -def exec_get_process_id(*args): - return _sim_services.exec_get_process_id(*args) -exec_get_process_id = _sim_services.exec_get_process_id - -def exec_get_rt_nap(*args): - return _sim_services.exec_get_rt_nap(*args) -exec_get_rt_nap = _sim_services.exec_get_rt_nap - -def exec_get_scheduled_start_index(*args): - return _sim_services.exec_get_scheduled_start_index(*args) -exec_get_scheduled_start_index = _sim_services.exec_get_scheduled_start_index - -def exec_get_sim_time(*args): - return _sim_services.exec_get_sim_time(*args) -exec_get_sim_time = _sim_services.exec_get_sim_time - -def exec_get_software_frame(*args): - return _sim_services.exec_get_software_frame(*args) -exec_get_software_frame = _sim_services.exec_get_software_frame - -def exec_get_software_frame_tics(*args): - return _sim_services.exec_get_software_frame_tics(*args) -exec_get_software_frame_tics = _sim_services.exec_get_software_frame_tics - -def exec_get_stack_trace(*args): - return _sim_services.exec_get_stack_trace(*args) -exec_get_stack_trace = _sim_services.exec_get_stack_trace - -def exec_get_terminate_time(*args): - return _sim_services.exec_get_terminate_time(*args) -exec_get_terminate_time = _sim_services.exec_get_terminate_time - -def exec_get_thread_amf_cycle_time(*args): - return _sim_services.exec_get_thread_amf_cycle_time(*args) -exec_get_thread_amf_cycle_time = _sim_services.exec_get_thread_amf_cycle_time - -def exec_get_time_tic_value(*args): - return _sim_services.exec_get_time_tic_value(*args) -exec_get_time_tic_value = _sim_services.exec_get_time_tic_value - -def exec_get_time_tics(*args): - return _sim_services.exec_get_time_tics(*args) -exec_get_time_tics = _sim_services.exec_get_time_tics - -def exec_get_trap_sigbus(*args): - return _sim_services.exec_get_trap_sigbus(*args) -exec_get_trap_sigbus = _sim_services.exec_get_trap_sigbus - -def exec_get_trap_sigfpe(*args): - return _sim_services.exec_get_trap_sigfpe(*args) -exec_get_trap_sigfpe = _sim_services.exec_get_trap_sigfpe - -def exec_get_trap_sigsegv(*args): - return _sim_services.exec_get_trap_sigsegv(*args) -exec_get_trap_sigsegv = _sim_services.exec_get_trap_sigsegv - -def exec_get_trap_sigabrt(*args): - return _sim_services.exec_get_trap_sigabrt(*args) -exec_get_trap_sigabrt = _sim_services.exec_get_trap_sigabrt - -def exec_get_trap_sigchld(*args): - return _sim_services.exec_get_trap_sigchld(*args) -exec_get_trap_sigchld = _sim_services.exec_get_trap_sigchld - -def exec_set_attach_debugger(*args): - return _sim_services.exec_set_attach_debugger(*args) -exec_set_attach_debugger = _sim_services.exec_set_attach_debugger - -def exec_set_debugger_command(*args): - return _sim_services.exec_set_debugger_command(*args) -exec_set_debugger_command = _sim_services.exec_set_debugger_command - -def exec_set_exec_command(*args): - return _sim_services.exec_set_exec_command(*args) -exec_set_exec_command = _sim_services.exec_set_exec_command - -def exec_set_freeze_command(*args): - return _sim_services.exec_set_freeze_command(*args) -exec_set_freeze_command = _sim_services.exec_set_freeze_command - -def exec_set_freeze_on_frame_boundary(*args): - return _sim_services.exec_set_freeze_on_frame_boundary(*args) -exec_set_freeze_on_frame_boundary = _sim_services.exec_set_freeze_on_frame_boundary - -def exec_set_freeze_frame(*args): - return _sim_services.exec_set_freeze_frame(*args) -exec_set_freeze_frame = _sim_services.exec_set_freeze_frame - -def exec_set_enable_freeze(*args): - return _sim_services.exec_set_enable_freeze(*args) -exec_set_enable_freeze = _sim_services.exec_set_enable_freeze - -def exec_set_job_cycle(*args): - return _sim_services.exec_set_job_cycle(*args) -exec_set_job_cycle = _sim_services.exec_set_job_cycle - -def exec_set_job_onoff(*args): - return _sim_services.exec_set_job_onoff(*args) -exec_set_job_onoff = _sim_services.exec_set_job_onoff - -def exec_set_rt_nap(*args): - return _sim_services.exec_set_rt_nap(*args) -exec_set_rt_nap = _sim_services.exec_set_rt_nap - -def exec_set_sim_object_onoff(*args): - return _sim_services.exec_set_sim_object_onoff(*args) -exec_set_sim_object_onoff = _sim_services.exec_set_sim_object_onoff - -def exec_set_software_frame(*args): - return _sim_services.exec_set_software_frame(*args) -exec_set_software_frame = _sim_services.exec_set_software_frame - -def exec_set_stack_trace(*args): - return _sim_services.exec_set_stack_trace(*args) -exec_set_stack_trace = _sim_services.exec_set_stack_trace - -def exec_set_terminate_time(*args): - return _sim_services.exec_set_terminate_time(*args) -exec_set_terminate_time = _sim_services.exec_set_terminate_time - -def exec_set_thread_enabled(*args): - return _sim_services.exec_set_thread_enabled(*args) -exec_set_thread_enabled = _sim_services.exec_set_thread_enabled - -def exec_set_thread_amf_cycle_time(*args): - return _sim_services.exec_set_thread_amf_cycle_time(*args) -exec_set_thread_amf_cycle_time = _sim_services.exec_set_thread_amf_cycle_time - -def exec_set_thread_async_cycle_time(*args): - return _sim_services.exec_set_thread_async_cycle_time(*args) -exec_set_thread_async_cycle_time = _sim_services.exec_set_thread_async_cycle_time - -def exec_set_thread_async_wait(*args): - return _sim_services.exec_set_thread_async_wait(*args) -exec_set_thread_async_wait = _sim_services.exec_set_thread_async_wait - -def exec_set_thread_rt_semaphores(*args): - return _sim_services.exec_set_thread_rt_semaphores(*args) -exec_set_thread_rt_semaphores = _sim_services.exec_set_thread_rt_semaphores - -def exec_set_thread_cpu_affinity(*args): - return _sim_services.exec_set_thread_cpu_affinity(*args) -exec_set_thread_cpu_affinity = _sim_services.exec_set_thread_cpu_affinity - -def exec_set_thread_priority(*args): - return _sim_services.exec_set_thread_priority(*args) -exec_set_thread_priority = _sim_services.exec_set_thread_priority - -def exec_set_thread_process_type(*args): - return _sim_services.exec_set_thread_process_type(*args) -exec_set_thread_process_type = _sim_services.exec_set_thread_process_type - -def exec_set_time(*args): - return _sim_services.exec_set_time(*args) -exec_set_time = _sim_services.exec_set_time - -def exec_set_time_tics(*args): - return _sim_services.exec_set_time_tics(*args) -exec_set_time_tics = _sim_services.exec_set_time_tics - -def exec_set_time_tic_value(*args): - return _sim_services.exec_set_time_tic_value(*args) -exec_set_time_tic_value = _sim_services.exec_set_time_tic_value - -def exec_set_trap_sigbus(*args): - return _sim_services.exec_set_trap_sigbus(*args) -exec_set_trap_sigbus = _sim_services.exec_set_trap_sigbus - -def exec_set_trap_sigfpe(*args): - return _sim_services.exec_set_trap_sigfpe(*args) -exec_set_trap_sigfpe = _sim_services.exec_set_trap_sigfpe - -def exec_set_trap_sigsegv(*args): - return _sim_services.exec_set_trap_sigsegv(*args) -exec_set_trap_sigsegv = _sim_services.exec_set_trap_sigsegv - -def exec_set_trap_sigabrt(*args): - return _sim_services.exec_set_trap_sigabrt(*args) -exec_set_trap_sigabrt = _sim_services.exec_set_trap_sigabrt - -def exec_set_trap_sigchld(*args): - return _sim_services.exec_set_trap_sigchld(*args) -exec_set_trap_sigchld = _sim_services.exec_set_trap_sigchld - -def exec_set_version_date_tag(*args): - return _sim_services.exec_set_version_date_tag(*args) -exec_set_version_date_tag = _sim_services.exec_set_version_date_tag - -def exec_set_build_date(*args): - return _sim_services.exec_set_build_date(*args) -exec_set_build_date = _sim_services.exec_set_build_date - -def exec_set_current_version(*args): - return _sim_services.exec_set_current_version(*args) -exec_set_current_version = _sim_services.exec_set_current_version - -def exec_freeze(*args): - return _sim_services.exec_freeze(*args) -exec_freeze = _sim_services.exec_freeze - -def exec_run(*args): - return _sim_services.exec_run(*args) -exec_run = _sim_services.exec_run - -def exec_signal_terminate(*args): - return _sim_services.exec_signal_terminate(*args) -exec_signal_terminate = _sim_services.exec_signal_terminate - -def exec_terminate(*args): - return _sim_services.exec_terminate(*args) -exec_terminate = _sim_services.exec_terminate - -def exec_terminate_with_return(*args): - return _sim_services.exec_terminate_with_return(*args) -exec_terminate_with_return = _sim_services.exec_terminate_with_return - -def exec_instrument_before(*args): - return _sim_services.exec_instrument_before(*args) -exec_instrument_before = _sim_services.exec_instrument_before - -def exec_instrument_after(*args): - return _sim_services.exec_instrument_after(*args) -exec_instrument_after = _sim_services.exec_instrument_after - -def exec_instrument_remove(*args): - return _sim_services.exec_instrument_remove(*args) -exec_instrument_remove = _sim_services.exec_instrument_remove - -def exec_add_scheduled_job_class(*args): - return _sim_services.exec_add_scheduled_job_class(*args) -exec_add_scheduled_job_class = _sim_services.exec_add_scheduled_job_class - -def exec_add_depends_on_job(*args): - return _sim_services.exec_add_depends_on_job(*args) -exec_add_depends_on_job = _sim_services.exec_add_depends_on_job - -def exec_get_exec_cpp(*args): - return _sim_services.exec_get_exec_cpp(*args) -exec_get_exec_cpp = _sim_services.exec_get_exec_cpp - -def exec_add_sim_object(*args): - return _sim_services.exec_add_sim_object(*args) -exec_add_sim_object = _sim_services.exec_add_sim_object - -def exec_remove_sim_object(*args): - return _sim_services.exec_remove_sim_object(*args) -exec_remove_sim_object = _sim_services.exec_remove_sim_object - -def exec_get_sim_objects(*args): - return _sim_services.exec_get_sim_objects(*args) -exec_get_sim_objects = _sim_services.exec_get_sim_objects - -def exec_get_job(*args): - return _sim_services.exec_get_job(*args) -exec_get_job = _sim_services.exec_get_job - -def exec_get_curr_job(*args): - return _sim_services.exec_get_curr_job(*args) -exec_get_curr_job = _sim_services.exec_get_curr_job - -def exec_get_thread(*args): - return _sim_services.exec_get_thread(*args) -exec_get_thread = _sim_services.exec_get_thread - -def exec_get_all_jobs_vector(*args): - return _sim_services.exec_get_all_jobs_vector(*args) -exec_get_all_jobs_vector = _sim_services.exec_get_all_jobs_vector - -def exec_register_scheduler(*args): - return _sim_services.exec_register_scheduler(*args) -exec_register_scheduler = _sim_services.exec_register_scheduler -class ExternalApplication(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ExternalApplication, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ExternalApplication, name) - __repr__ = _swig_repr - CLOSE = _sim_services.ExternalApplication_CLOSE - NOTIFY = _sim_services.ExternalApplication_NOTIFY - NOTHING = _sim_services.ExternalApplication_NOTHING - - def __init__(self, *args): - this = _sim_services.new_ExternalApplication(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ExternalApplication - __del__ = lambda self: None - - def set_startup_command(self, *args): - return _sim_services.ExternalApplication_set_startup_command(self, *args) - - def get_startup_command(self, *args): - return _sim_services.ExternalApplication_get_startup_command(self, *args) - - def get_startup_command_c_str(self, *args): - return _sim_services.ExternalApplication_get_startup_command_c_str(self, *args) - - def add_arguments(self, *args): - return _sim_services.ExternalApplication_add_arguments(self, *args) - - def set_arguments(self, *args): - return _sim_services.ExternalApplication_set_arguments(self, *args) - - def get_arguments(self, *args): - return _sim_services.ExternalApplication_get_arguments(self, *args) - - def set_host(self, *args): - return _sim_services.ExternalApplication_set_host(self, *args) - - def get_host(self, *args): - return _sim_services.ExternalApplication_get_host(self, *args) - - def set_port(self, *args): - return _sim_services.ExternalApplication_set_port(self, *args) - - def get_port(self, *args): - return _sim_services.ExternalApplication_get_port(self, *args) - - def set_auto_reconnect(self, *args): - return _sim_services.ExternalApplication_set_auto_reconnect(self, *args) - - def get_auto_reconnect(self, *args): - return _sim_services.ExternalApplication_get_auto_reconnect(self, *args) - - def set_cycle_period(self, *args): - return _sim_services.ExternalApplication_set_cycle_period(self, *args) - - def get_cycle_period(self, *args): - return _sim_services.ExternalApplication_get_cycle_period(self, *args) - - def set_minimum_cycle_period(self, *args): - return _sim_services.ExternalApplication_set_minimum_cycle_period(self, *args) - - def get_minimum_cycle_period(self, *args): - return _sim_services.ExternalApplication_get_minimum_cycle_period(self, *args) - - def set_disconnect_behavior(self, *args): - return _sim_services.ExternalApplication_set_disconnect_behavior(self, *args) - - def get_disconnect_behavior(self, *args): - return _sim_services.ExternalApplication_get_disconnect_behavior(self, *args) - - def set_height(self, *args): - return _sim_services.ExternalApplication_set_height(self, *args) - - def get_height(self, *args): - return _sim_services.ExternalApplication_get_height(self, *args) - - def set_width(self, *args): - return _sim_services.ExternalApplication_set_width(self, *args) - - def get_width(self, *args): - return _sim_services.ExternalApplication_get_width(self, *args) - - def set_x(self, *args): - return _sim_services.ExternalApplication_set_x(self, *args) - - def get_x(self, *args): - return _sim_services.ExternalApplication_get_x(self, *args) - - def set_y(self, *args): - return _sim_services.ExternalApplication_set_y(self, *args) - - def get_y(self, *args): - return _sim_services.ExternalApplication_get_y(self, *args) - - def launch(self, *args): - return _sim_services.ExternalApplication_launch(self, *args) -ExternalApplication_swigregister = _sim_services.ExternalApplication_swigregister -ExternalApplication_swigregister(ExternalApplication) - -class MalfunctionsTrickView(ExternalApplication): - __swig_setmethods__ = {} - for _s in [ExternalApplication]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MalfunctionsTrickView, name, value) - __swig_getmethods__ = {} - for _s in [ExternalApplication]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MalfunctionsTrickView, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MalfunctionsTrickView(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MalfunctionsTrickView - __del__ = lambda self: None -MalfunctionsTrickView_swigregister = _sim_services.MalfunctionsTrickView_swigregister -MalfunctionsTrickView_swigregister(MalfunctionsTrickView) - -class MonteMonitor(ExternalApplication): - __swig_setmethods__ = {} - for _s in [ExternalApplication]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteMonitor, name, value) - __swig_getmethods__ = {} - for _s in [ExternalApplication]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteMonitor, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteMonitor(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteMonitor - __del__ = lambda self: None -MonteMonitor_swigregister = _sim_services.MonteMonitor_swigregister -MonteMonitor_swigregister(MonteMonitor) - -class SimControlPanel(ExternalApplication): - __swig_setmethods__ = {} - for _s in [ExternalApplication]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, SimControlPanel, name, value) - __swig_getmethods__ = {} - for _s in [ExternalApplication]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, SimControlPanel, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_SimControlPanel(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["auto_exit"] = _sim_services.SimControlPanel_auto_exit_set - __swig_getmethods__["auto_exit"] = _sim_services.SimControlPanel_auto_exit_get - if _newclass: - auto_exit = _swig_property(_sim_services.SimControlPanel_auto_exit_get, _sim_services.SimControlPanel_auto_exit_set) - __swig_destroy__ = _sim_services.delete_SimControlPanel - __del__ = lambda self: None -SimControlPanel_swigregister = _sim_services.SimControlPanel_swigregister -SimControlPanel_swigregister(SimControlPanel) - -class StripChart(ExternalApplication): - __swig_setmethods__ = {} - for _s in [ExternalApplication]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, StripChart, name, value) - __swig_getmethods__ = {} - for _s in [ExternalApplication]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, StripChart, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_StripChart(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def set_arguments(self, *args): - return _sim_services.StripChart_set_arguments(self, *args) - - def set_input_file(self, *args): - return _sim_services.StripChart_set_input_file(self, *args) - - def get_input_file(self, *args): - return _sim_services.StripChart_get_input_file(self, *args) - __swig_destroy__ = _sim_services.delete_StripChart - __del__ = lambda self: None -StripChart_swigregister = _sim_services.StripChart_swigregister -StripChart_swigregister(StripChart) - -class TrickView(ExternalApplication): - __swig_setmethods__ = {} - for _s in [ExternalApplication]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, TrickView, name, value) - __swig_getmethods__ = {} - for _s in [ExternalApplication]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, TrickView, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_TrickView(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def set_arguments(self, *args): - return _sim_services.TrickView_set_arguments(self, *args) - - def set_strip_charts_only(self, *args): - return _sim_services.TrickView_set_strip_charts_only(self, *args) - - def get_strip_charts_only(self, *args): - return _sim_services.TrickView_get_strip_charts_only(self, *args) - - def set_auto_open_file(self, *args): - return _sim_services.TrickView_set_auto_open_file(self, *args) - - def get_auto_open_file(self, *args): - return _sim_services.TrickView_get_auto_open_file(self, *args) - - def set_auto_open_and_set_file(self, *args): - return _sim_services.TrickView_set_auto_open_and_set_file(self, *args) - - def get_auto_open_and_set_file(self, *args): - return _sim_services.TrickView_get_auto_open_and_set_file(self, *args) - - def set_auto_set_file(self, *args): - return _sim_services.TrickView_set_auto_set_file(self, *args) - - def get_auto_set_file(self, *args): - return _sim_services.TrickView_get_auto_set_file(self, *args) - __swig_destroy__ = _sim_services.delete_TrickView - __del__ = lambda self: None -TrickView_swigregister = _sim_services.TrickView_swigregister -TrickView_swigregister(TrickView) - - -def get_external_applications(*args): - return _sim_services.get_external_applications(*args) -get_external_applications = _sim_services.get_external_applications - -def add_external_application(*args): - return _sim_services.add_external_application(*args) -add_external_application = _sim_services.add_external_application - -def remove_external_application(*args): - return _sim_services.remove_external_application(*args) -remove_external_application = _sim_services.remove_external_application - -def remove_all_external_applications(*args): - return _sim_services.remove_all_external_applications(*args) -remove_all_external_applications = _sim_services.remove_all_external_applications - -def launch_all_external_applications(*args): - return _sim_services.launch_all_external_applications(*args) -launch_all_external_applications = _sim_services.launch_all_external_applications - -def sim_control_panel_set_enabled(*args): - return _sim_services.sim_control_panel_set_enabled(*args) -sim_control_panel_set_enabled = _sim_services.sim_control_panel_set_enabled - -def sim_control_panel_get_enabled(*args): - return _sim_services.sim_control_panel_get_enabled(*args) -sim_control_panel_get_enabled = _sim_services.sim_control_panel_get_enabled - -def sim_control_panel_auto_exit_set_enabled(*args): - return _sim_services.sim_control_panel_auto_exit_set_enabled(*args) -sim_control_panel_auto_exit_set_enabled = _sim_services.sim_control_panel_auto_exit_set_enabled - -def trick_view_set_enabled(*args): - return _sim_services.trick_view_set_enabled(*args) -trick_view_set_enabled = _sim_services.trick_view_set_enabled - -def trick_view_get_enabled(*args): - return _sim_services.trick_view_get_enabled(*args) -trick_view_get_enabled = _sim_services.trick_view_get_enabled - -def malfunctions_trick_view_set_enabled(*args): - return _sim_services.malfunctions_trick_view_set_enabled(*args) -malfunctions_trick_view_set_enabled = _sim_services.malfunctions_trick_view_set_enabled - -def malfunctions_trick_view_get_enabled(*args): - return _sim_services.malfunctions_trick_view_get_enabled(*args) -malfunctions_trick_view_get_enabled = _sim_services.malfunctions_trick_view_get_enabled - -def monte_monitor_set_enabled(*args): - return _sim_services.monte_monitor_set_enabled(*args) -monte_monitor_set_enabled = _sim_services.monte_monitor_set_enabled - -def monte_monitor_get_enabled(*args): - return _sim_services.monte_monitor_get_enabled(*args) -monte_monitor_get_enabled = _sim_services.monte_monitor_get_enabled - -def stripchart_set_enabled(*args): - return _sim_services.stripchart_set_enabled(*args) -stripchart_set_enabled = _sim_services.stripchart_set_enabled - -def stripchart_get_enabled(*args): - return _sim_services.stripchart_get_enabled(*args) -stripchart_get_enabled = _sim_services.stripchart_get_enabled - -def sim_control_panel_set_startup_command(*args): - return _sim_services.sim_control_panel_set_startup_command(*args) -sim_control_panel_set_startup_command = _sim_services.sim_control_panel_set_startup_command - -def sim_control_panel_get_startup_command(*args): - return _sim_services.sim_control_panel_get_startup_command(*args) -sim_control_panel_get_startup_command = _sim_services.sim_control_panel_get_startup_command - -def trick_view_set_startup_command(*args): - return _sim_services.trick_view_set_startup_command(*args) -trick_view_set_startup_command = _sim_services.trick_view_set_startup_command - -def trick_view_get_startup_command(*args): - return _sim_services.trick_view_get_startup_command(*args) -trick_view_get_startup_command = _sim_services.trick_view_get_startup_command - -def malfunctions_trick_view_set_startup_command(*args): - return _sim_services.malfunctions_trick_view_set_startup_command(*args) -malfunctions_trick_view_set_startup_command = _sim_services.malfunctions_trick_view_set_startup_command - -def malfunctions_trick_view_get_startup_command(*args): - return _sim_services.malfunctions_trick_view_get_startup_command(*args) -malfunctions_trick_view_get_startup_command = _sim_services.malfunctions_trick_view_get_startup_command - -def monte_monitor_set_startup_command(*args): - return _sim_services.monte_monitor_set_startup_command(*args) -monte_monitor_set_startup_command = _sim_services.monte_monitor_set_startup_command - -def monte_monitor_get_startup_command(*args): - return _sim_services.monte_monitor_get_startup_command(*args) -monte_monitor_get_startup_command = _sim_services.monte_monitor_get_startup_command - -def stripchart_set_startup_command(*args): - return _sim_services.stripchart_set_startup_command(*args) -stripchart_set_startup_command = _sim_services.stripchart_set_startup_command - -def stripchart_get_startup_command(*args): - return _sim_services.stripchart_get_startup_command(*args) -stripchart_get_startup_command = _sim_services.stripchart_get_startup_command - -def sim_control_panel_launch(*args): - return _sim_services.sim_control_panel_launch(*args) -sim_control_panel_launch = _sim_services.sim_control_panel_launch - -def trick_view_launch(*args): - return _sim_services.trick_view_launch(*args) -trick_view_launch = _sim_services.trick_view_launch - -def malfunctions_trick_view_launch(*args): - return _sim_services.malfunctions_trick_view_launch(*args) -malfunctions_trick_view_launch = _sim_services.malfunctions_trick_view_launch - -def monte_monitor_launch(*args): - return _sim_services.monte_monitor_launch(*args) -monte_monitor_launch = _sim_services.monte_monitor_launch - -def stripchart_launch(*args): - return _sim_services.stripchart_launch(*args) -stripchart_launch = _sim_services.stripchart_launch - -def trick_view_set_cycle_period(*args): - return _sim_services.trick_view_set_cycle_period(*args) -trick_view_set_cycle_period = _sim_services.trick_view_set_cycle_period - -def trick_view_add_auto_load_file(*args): - return _sim_services.trick_view_add_auto_load_file(*args) -trick_view_add_auto_load_file = _sim_services.trick_view_add_auto_load_file -class VAR_DECLARE(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VAR_DECLARE, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VAR_DECLARE, name) - __repr__ = _swig_repr - __swig_setmethods__["num_pointers"] = _sim_services.VAR_DECLARE_num_pointers_set - __swig_getmethods__["num_pointers"] = _sim_services.VAR_DECLARE_num_pointers_get - if _newclass: - num_pointers = _swig_property(_sim_services.VAR_DECLARE_num_pointers_get, _sim_services.VAR_DECLARE_num_pointers_set) - __swig_setmethods__["name"] = _sim_services.VAR_DECLARE_name_set - __swig_getmethods__["name"] = _sim_services.VAR_DECLARE_name_get - if _newclass: - name = _swig_property(_sim_services.VAR_DECLARE_name_get, _sim_services.VAR_DECLARE_name_set) - __swig_setmethods__["dim_list"] = _sim_services.VAR_DECLARE_dim_list_set - __swig_getmethods__["dim_list"] = _sim_services.VAR_DECLARE_dim_list_get - if _newclass: - dim_list = _swig_property(_sim_services.VAR_DECLARE_dim_list_get, _sim_services.VAR_DECLARE_dim_list_set) - __swig_setmethods__["value"] = _sim_services.VAR_DECLARE_value_set - __swig_getmethods__["value"] = _sim_services.VAR_DECLARE_value_get - if _newclass: - value = _swig_property(_sim_services.VAR_DECLARE_value_get, _sim_services.VAR_DECLARE_value_set) - - def __init__(self): - this = _sim_services.new_VAR_DECLARE() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VAR_DECLARE - __del__ = lambda self: None -VAR_DECLARE_swigregister = _sim_services.VAR_DECLARE_swigregister -VAR_DECLARE_swigregister(VAR_DECLARE) - -class VAR_LIST(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VAR_LIST, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VAR_LIST, name) - __repr__ = _swig_repr - __swig_setmethods__["num_vars"] = _sim_services.VAR_LIST_num_vars_set - __swig_getmethods__["num_vars"] = _sim_services.VAR_LIST_num_vars_get - if _newclass: - num_vars = _swig_property(_sim_services.VAR_LIST_num_vars_get, _sim_services.VAR_LIST_num_vars_set) - __swig_setmethods__["var_declare"] = _sim_services.VAR_LIST_var_declare_set - __swig_getmethods__["var_declare"] = _sim_services.VAR_LIST_var_declare_get - if _newclass: - var_declare = _swig_property(_sim_services.VAR_LIST_var_declare_get, _sim_services.VAR_LIST_var_declare_set) - - def __init__(self): - this = _sim_services.new_VAR_LIST() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VAR_LIST - __del__ = lambda self: None -VAR_LIST_swigregister = _sim_services.VAR_LIST_swigregister -VAR_LIST_swigregister(VAR_LIST) - -TRICK_LOCAL = _sim_services.TRICK_LOCAL -TRICK_EXTERN = _sim_services.TRICK_EXTERN -TRICK_ALLOC_MALLOC = _sim_services.TRICK_ALLOC_MALLOC -TRICK_ALLOC_NEW = _sim_services.TRICK_ALLOC_NEW -TRICK_ALLOC_OTHER = _sim_services.TRICK_ALLOC_OTHER -class ALLOC_INFO(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ALLOC_INFO, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ALLOC_INFO, name) - __repr__ = _swig_repr - __swig_setmethods__["start"] = _sim_services.ALLOC_INFO_start_set - __swig_getmethods__["start"] = _sim_services.ALLOC_INFO_start_get - if _newclass: - start = _swig_property(_sim_services.ALLOC_INFO_start_get, _sim_services.ALLOC_INFO_start_set) - __swig_setmethods__["end"] = _sim_services.ALLOC_INFO_end_set - __swig_getmethods__["end"] = _sim_services.ALLOC_INFO_end_get - if _newclass: - end = _swig_property(_sim_services.ALLOC_INFO_end_get, _sim_services.ALLOC_INFO_end_set) - __swig_setmethods__["name"] = _sim_services.ALLOC_INFO_name_set - __swig_getmethods__["name"] = _sim_services.ALLOC_INFO_name_get - if _newclass: - name = _swig_property(_sim_services.ALLOC_INFO_name_get, _sim_services.ALLOC_INFO_name_set) - __swig_setmethods__["size"] = _sim_services.ALLOC_INFO_size_set - __swig_getmethods__["size"] = _sim_services.ALLOC_INFO_size_get - if _newclass: - size = _swig_property(_sim_services.ALLOC_INFO_size_get, _sim_services.ALLOC_INFO_size_set) - __swig_setmethods__["sentinel_bytes"] = _sim_services.ALLOC_INFO_sentinel_bytes_set - __swig_getmethods__["sentinel_bytes"] = _sim_services.ALLOC_INFO_sentinel_bytes_get - if _newclass: - sentinel_bytes = _swig_property(_sim_services.ALLOC_INFO_sentinel_bytes_get, _sim_services.ALLOC_INFO_sentinel_bytes_set) - __swig_setmethods__["language"] = _sim_services.ALLOC_INFO_language_set - __swig_getmethods__["language"] = _sim_services.ALLOC_INFO_language_get - if _newclass: - language = _swig_property(_sim_services.ALLOC_INFO_language_get, _sim_services.ALLOC_INFO_language_set) - __swig_setmethods__["type"] = _sim_services.ALLOC_INFO_type_set - __swig_getmethods__["type"] = _sim_services.ALLOC_INFO_type_get - if _newclass: - type = _swig_property(_sim_services.ALLOC_INFO_type_get, _sim_services.ALLOC_INFO_type_set) - __swig_setmethods__["stcl"] = _sim_services.ALLOC_INFO_stcl_set - __swig_getmethods__["stcl"] = _sim_services.ALLOC_INFO_stcl_get - if _newclass: - stcl = _swig_property(_sim_services.ALLOC_INFO_stcl_get, _sim_services.ALLOC_INFO_stcl_set) - __swig_setmethods__["alloc_type"] = _sim_services.ALLOC_INFO_alloc_type_set - __swig_getmethods__["alloc_type"] = _sim_services.ALLOC_INFO_alloc_type_get - if _newclass: - alloc_type = _swig_property(_sim_services.ALLOC_INFO_alloc_type_get, _sim_services.ALLOC_INFO_alloc_type_set) - __swig_setmethods__["user_type_name"] = _sim_services.ALLOC_INFO_user_type_name_set - __swig_getmethods__["user_type_name"] = _sim_services.ALLOC_INFO_user_type_name_get - if _newclass: - user_type_name = _swig_property(_sim_services.ALLOC_INFO_user_type_name_get, _sim_services.ALLOC_INFO_user_type_name_set) - __swig_setmethods__["attr"] = _sim_services.ALLOC_INFO_attr_set - __swig_getmethods__["attr"] = _sim_services.ALLOC_INFO_attr_get - if _newclass: - attr = _swig_property(_sim_services.ALLOC_INFO_attr_get, _sim_services.ALLOC_INFO_attr_set) - __swig_setmethods__["num"] = _sim_services.ALLOC_INFO_num_set - __swig_getmethods__["num"] = _sim_services.ALLOC_INFO_num_get - if _newclass: - num = _swig_property(_sim_services.ALLOC_INFO_num_get, _sim_services.ALLOC_INFO_num_set) - __swig_setmethods__["num_index"] = _sim_services.ALLOC_INFO_num_index_set - __swig_getmethods__["num_index"] = _sim_services.ALLOC_INFO_num_index_get - if _newclass: - num_index = _swig_property(_sim_services.ALLOC_INFO_num_index_get, _sim_services.ALLOC_INFO_num_index_set) - __swig_setmethods__["index"] = _sim_services.ALLOC_INFO_index_set - __swig_getmethods__["index"] = _sim_services.ALLOC_INFO_index_get - if _newclass: - index = _swig_property(_sim_services.ALLOC_INFO_index_get, _sim_services.ALLOC_INFO_index_set) - __swig_setmethods__["id"] = _sim_services.ALLOC_INFO_id_set - __swig_getmethods__["id"] = _sim_services.ALLOC_INFO_id_get - if _newclass: - id = _swig_property(_sim_services.ALLOC_INFO_id_get, _sim_services.ALLOC_INFO_id_set) - __swig_setmethods__["alloced_in_memory_init"] = _sim_services.ALLOC_INFO_alloced_in_memory_init_set - __swig_getmethods__["alloced_in_memory_init"] = _sim_services.ALLOC_INFO_alloced_in_memory_init_get - if _newclass: - alloced_in_memory_init = _swig_property(_sim_services.ALLOC_INFO_alloced_in_memory_init_get, _sim_services.ALLOC_INFO_alloced_in_memory_init_set) - - def __init__(self): - this = _sim_services.new_ALLOC_INFO() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ALLOC_INFO - __del__ = lambda self: None -ALLOC_INFO_swigregister = _sim_services.ALLOC_INFO_swigregister -ALLOC_INFO_swigregister(ALLOC_INFO) - - -def TMM_declare_var(*args): - return _sim_services.TMM_declare_var(*args) -TMM_declare_var = _sim_services.TMM_declare_var - -def TMM_declare_var_1d(*args): - return _sim_services.TMM_declare_var_1d(*args) -TMM_declare_var_1d = _sim_services.TMM_declare_var_1d - -def TMM_declare_var_s(*args): - return _sim_services.TMM_declare_var_s(*args) -TMM_declare_var_s = _sim_services.TMM_declare_var_s - -def alloc_type(*args): - return _sim_services.alloc_type(*args) -alloc_type = _sim_services.alloc_type - -def TMM_declare_operatornew_var(*args): - return _sim_services.TMM_declare_operatornew_var(*args) -TMM_declare_operatornew_var = _sim_services.TMM_declare_operatornew_var - -def TMM_declare_ext_var(*args): - return _sim_services.TMM_declare_ext_var(*args) -TMM_declare_ext_var = _sim_services.TMM_declare_ext_var - -def TMM_declare_ext_var_1d(*args): - return _sim_services.TMM_declare_ext_var_1d(*args) -TMM_declare_ext_var_1d = _sim_services.TMM_declare_ext_var_1d - -def TMM_declare_ext_var_s(*args): - return _sim_services.TMM_declare_ext_var_s(*args) -TMM_declare_ext_var_s = _sim_services.TMM_declare_ext_var_s - -def TMM_resize_array_a(*args): - return _sim_services.TMM_resize_array_a(*args) -TMM_resize_array_a = _sim_services.TMM_resize_array_a - -def TMM_resize_array_n(*args): - return _sim_services.TMM_resize_array_n(*args) -TMM_resize_array_n = _sim_services.TMM_resize_array_n - -def TMM_resize_array_1d_a(*args): - return _sim_services.TMM_resize_array_1d_a(*args) -TMM_resize_array_1d_a = _sim_services.TMM_resize_array_1d_a - -def TMM_resize_array_1d_n(*args): - return _sim_services.TMM_resize_array_1d_n(*args) -TMM_resize_array_1d_n = _sim_services.TMM_resize_array_1d_n - -def TMM_strdup(*args): - return _sim_services.TMM_strdup(*args) -TMM_strdup = _sim_services.TMM_strdup - -def TMM_var_exists(*args): - return _sim_services.TMM_var_exists(*args) -TMM_var_exists = _sim_services.TMM_var_exists - -def TMM_is_alloced(*args): - return _sim_services.TMM_is_alloced(*args) -TMM_is_alloced = _sim_services.TMM_is_alloced - -def TMM_set_debug_level(*args): - return _sim_services.TMM_set_debug_level(*args) -TMM_set_debug_level = _sim_services.TMM_set_debug_level - -def TMM_reduced_checkpoint(*args): - return _sim_services.TMM_reduced_checkpoint(*args) -TMM_reduced_checkpoint = _sim_services.TMM_reduced_checkpoint - -def TMM_hexfloat_checkpoint(*args): - return _sim_services.TMM_hexfloat_checkpoint(*args) -TMM_hexfloat_checkpoint = _sim_services.TMM_hexfloat_checkpoint - -def TMM_clear_var_a(*args): - return _sim_services.TMM_clear_var_a(*args) -TMM_clear_var_a = _sim_services.TMM_clear_var_a - -def TMM_clear_var_n(*args): - return _sim_services.TMM_clear_var_n(*args) -TMM_clear_var_n = _sim_services.TMM_clear_var_n - -def TMM_delete_var_a(*args): - return _sim_services.TMM_delete_var_a(*args) -TMM_delete_var_a = _sim_services.TMM_delete_var_a - -def TMM_delete_var_n(*args): - return _sim_services.TMM_delete_var_n(*args) -TMM_delete_var_n = _sim_services.TMM_delete_var_n - -def TMM_delete_extern_var_a(*args): - return _sim_services.TMM_delete_extern_var_a(*args) -TMM_delete_extern_var_a = _sim_services.TMM_delete_extern_var_a - -def TMM_delete_extern_var_n(*args): - return _sim_services.TMM_delete_extern_var_n(*args) -TMM_delete_extern_var_n = _sim_services.TMM_delete_extern_var_n - -def TMM_write_checkpoint(*args): - return _sim_services.TMM_write_checkpoint(*args) -TMM_write_checkpoint = _sim_services.TMM_write_checkpoint - -def TMM_read_checkpoint(*args): - return _sim_services.TMM_read_checkpoint(*args) -TMM_read_checkpoint = _sim_services.TMM_read_checkpoint - -def TMM_read_checkpoint_from_string(*args): - return _sim_services.TMM_read_checkpoint_from_string(*args) -TMM_read_checkpoint_from_string = _sim_services.TMM_read_checkpoint_from_string - -def TMM_init_from_checkpoint(*args): - return _sim_services.TMM_init_from_checkpoint(*args) -TMM_init_from_checkpoint = _sim_services.TMM_init_from_checkpoint - -def TMM_add_shared_library_symbols(*args): - return _sim_services.TMM_add_shared_library_symbols(*args) -TMM_add_shared_library_symbols = _sim_services.TMM_add_shared_library_symbols - -def TMM_set_stl_restore(*args): - return _sim_services.TMM_set_stl_restore(*args) -TMM_set_stl_restore = _sim_services.TMM_set_stl_restore - -def ref_attributes(*args): - return _sim_services.ref_attributes(*args) -ref_attributes = _sim_services.ref_attributes - -def ref_var(*args): - return _sim_services.ref_var(*args) -ref_var = _sim_services.ref_var - -def get_size(*args): - return _sim_services.get_size(*args) -get_size = _sim_services.get_size - -def add_var(*args): - return _sim_services.add_var(*args) -add_var = _sim_services.add_var - -def add_vars(*args): - return _sim_services.add_vars(*args) -add_vars = _sim_services.add_vars - -def follow_address_path(*args): - return _sim_services.follow_address_path(*args) -follow_address_path = _sim_services.follow_address_path - -def ref_allocate(*args): - return _sim_services.ref_allocate(*args) -ref_allocate = _sim_services.ref_allocate - -def ref_assignment(*args): - return _sim_services.ref_assignment(*args) -ref_assignment = _sim_services.ref_assignment - -def get_truncated_size(*args): - return _sim_services.get_truncated_size(*args) -get_truncated_size = _sim_services.get_truncated_size - -def io_get_fixed_truncated_size(*args): - return _sim_services.io_get_fixed_truncated_size(*args) -io_get_fixed_truncated_size = _sim_services.io_get_fixed_truncated_size - -def get_alloc_info_of(*args): - return _sim_services.get_alloc_info_of(*args) -get_alloc_info_of = _sim_services.get_alloc_info_of - -def get_alloc_info_at(*args): - return _sim_services.get_alloc_info_at(*args) -get_alloc_info_at = _sim_services.get_alloc_info_at - -def set_alloc_name_at(*args): - return _sim_services.set_alloc_name_at(*args) -set_alloc_name_at = _sim_services.set_alloc_name_at - -def ref_free(*args): - return _sim_services.ref_free(*args) -ref_free = _sim_services.ref_free - -def get_enumerated(*args): - return _sim_services.get_enumerated(*args) -get_enumerated = _sim_services.get_enumerated - -def TMM_add_checkpoint_alloc_dependency(*args): - return _sim_services.TMM_add_checkpoint_alloc_dependency(*args) -TMM_add_checkpoint_alloc_dependency = _sim_services.TMM_add_checkpoint_alloc_dependency -MM_OK = _sim_services.MM_OK -MM_ASSIGNMENT_LIST = _sim_services.MM_ASSIGNMENT_LIST -MM_ERROR = _sim_services.MM_ERROR -MM_FILE_STREAM = _sim_services.MM_FILE_STREAM -MM_FILE_STREAM_HIGH_ARG = _sim_services.MM_FILE_STREAM_HIGH_ARG -MM_INIT_GT_512_LINE = _sim_services.MM_INIT_GT_512_LINE -MM_INVALID_UNITS = _sim_services.MM_INVALID_UNITS -MM_MAX_ERROR = _sim_services.MM_MAX_ERROR -MM_PARAMETER_ARRAY_DIM = _sim_services.MM_PARAMETER_ARRAY_DIM -MM_PARAMETER_ARRAY_SIZE = _sim_services.MM_PARAMETER_ARRAY_SIZE -MM_PARAMETER_TYPE = _sim_services.MM_PARAMETER_TYPE -MM_STRUCT_NOT_ASSIGNABLE = _sim_services.MM_STRUCT_NOT_ASSIGNABLE -MM_SYNTAX_ERROR = _sim_services.MM_SYNTAX_ERROR -MM_TOO_MANY_ARRAY_DIMENSIONS = _sim_services.MM_TOO_MANY_ARRAY_DIMENSIONS -MM_UNCLOSED_COMMENT = _sim_services.MM_UNCLOSED_COMMENT -MM_UNDEFINED_REFERENCE = _sim_services.MM_UNDEFINED_REFERENCE -MM_UNTERMINATED_STRING = _sim_services.MM_UNTERMINATED_STRING -BASE_NAME = _sim_services.BASE_NAME -ELEM_NAME = _sim_services.ELEM_NAME -ARRAY_INDEX = _sim_services.ARRAY_INDEX -class VarNameElement(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VarNameElement, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VarNameElement, name) - __repr__ = _swig_repr - __swig_setmethods__["type"] = _sim_services.VarNameElement_type_set - __swig_getmethods__["type"] = _sim_services.VarNameElement_type_get - if _newclass: - type = _swig_property(_sim_services.VarNameElement_type_get, _sim_services.VarNameElement_type_set) - __swig_setmethods__["index"] = _sim_services.VarNameElement_index_set - __swig_getmethods__["index"] = _sim_services.VarNameElement_index_get - if _newclass: - index = _swig_property(_sim_services.VarNameElement_index_get, _sim_services.VarNameElement_index_set) - __swig_setmethods__["name"] = _sim_services.VarNameElement_name_set - __swig_getmethods__["name"] = _sim_services.VarNameElement_name_get - if _newclass: - name = _swig_property(_sim_services.VarNameElement_name_get, _sim_services.VarNameElement_name_set) - - def __init__(self): - this = _sim_services.new_VarNameElement() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VarNameElement - __del__ = lambda self: None -VarNameElement_swigregister = _sim_services.VarNameElement_swigregister -VarNameElement_swigregister(VarNameElement) - -class CheckPointAgent(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, CheckPointAgent, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, CheckPointAgent, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_CheckPointAgent - __del__ = lambda self: None - - def input_perm_check(self, *args): - return _sim_services.CheckPointAgent_input_perm_check(self, *args) - - def output_perm_check(self, *args): - return _sim_services.CheckPointAgent_output_perm_check(self, *args) - - def write_decl(self, *args): - return _sim_services.CheckPointAgent_write_decl(self, *args) - - def push_basename(self, *args): - return _sim_services.CheckPointAgent_push_basename(self, *args) - - def push_struct_elem(self, *args): - return _sim_services.CheckPointAgent_push_struct_elem(self, *args) - - def push_array_elem(self, *args): - return _sim_services.CheckPointAgent_push_array_elem(self, *args) - - def pop_elem(self, *args): - return _sim_services.CheckPointAgent_pop_elem(self, *args) - - def assign_rvalue(self, *args): - return _sim_services.CheckPointAgent_assign_rvalue(self, *args) - - def restore(self, *args): - return _sim_services.CheckPointAgent_restore(self, *args) - - def set_reduced_checkpoint(self, *args): - return _sim_services.CheckPointAgent_set_reduced_checkpoint(self, *args) - - def set_hexfloat_checkpoint(self, *args): - return _sim_services.CheckPointAgent_set_hexfloat_checkpoint(self, *args) - - def set_debug_level(self, *args): - return _sim_services.CheckPointAgent_set_debug_level(self, *args) - __swig_setmethods__["reduced_checkpoint"] = _sim_services.CheckPointAgent_reduced_checkpoint_set - __swig_getmethods__["reduced_checkpoint"] = _sim_services.CheckPointAgent_reduced_checkpoint_get - if _newclass: - reduced_checkpoint = _swig_property(_sim_services.CheckPointAgent_reduced_checkpoint_get, _sim_services.CheckPointAgent_reduced_checkpoint_set) - __swig_setmethods__["hexfloat_checkpoint"] = _sim_services.CheckPointAgent_hexfloat_checkpoint_set - __swig_getmethods__["hexfloat_checkpoint"] = _sim_services.CheckPointAgent_hexfloat_checkpoint_get - if _newclass: - hexfloat_checkpoint = _swig_property(_sim_services.CheckPointAgent_hexfloat_checkpoint_get, _sim_services.CheckPointAgent_hexfloat_checkpoint_set) - __swig_setmethods__["debug_level"] = _sim_services.CheckPointAgent_debug_level_set - __swig_getmethods__["debug_level"] = _sim_services.CheckPointAgent_debug_level_get - if _newclass: - debug_level = _swig_property(_sim_services.CheckPointAgent_debug_level_get, _sim_services.CheckPointAgent_debug_level_set) - __swig_setmethods__["leftside_stack"] = _sim_services.CheckPointAgent_leftside_stack_set - __swig_getmethods__["leftside_stack"] = _sim_services.CheckPointAgent_leftside_stack_get - if _newclass: - leftside_stack = _swig_property(_sim_services.CheckPointAgent_leftside_stack_get, _sim_services.CheckPointAgent_leftside_stack_set) -CheckPointAgent_swigregister = _sim_services.CheckPointAgent_swigregister -CheckPointAgent_swigregister(CheckPointAgent) - -class MemoryManager(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MemoryManager, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MemoryManager, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MemoryManager(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MemoryManager - __del__ = lambda self: None - - def declare_var(self, *args): - return _sim_services.MemoryManager_declare_var(self, *args) - - def declare_operatornew_var(self, *args): - return _sim_services.MemoryManager_declare_operatornew_var(self, *args) - - def declare_extern_var(self, *args): - return _sim_services.MemoryManager_declare_extern_var(self, *args) - - def resize_array(self, *args): - return _sim_services.MemoryManager_resize_array(self, *args) - - def mm_strdup(self, *args): - return _sim_services.MemoryManager_mm_strdup(self, *args) - - def var_exists(self, *args): - return _sim_services.MemoryManager_var_exists(self, *args) - - def sizeof_type(self, *args): - return _sim_services.MemoryManager_sizeof_type(self, *args) - - def is_alloced(self, *args): - return _sim_services.MemoryManager_is_alloced(self, *args) - - def set_debug_level(self, *args): - return _sim_services.MemoryManager_set_debug_level(self, *args) - - def set_expanded_arrays(self, *args): - return _sim_services.MemoryManager_set_expanded_arrays(self, *args) - - def set_reduced_checkpoint(self, *args): - return _sim_services.MemoryManager_set_reduced_checkpoint(self, *args) - - def set_hexfloat_checkpoint(self, *args): - return _sim_services.MemoryManager_set_hexfloat_checkpoint(self, *args) - - def clear_var(self, *args): - return _sim_services.MemoryManager_clear_var(self, *args) - - def clear_all_vars(self, *args): - return _sim_services.MemoryManager_clear_all_vars(self, *args) - - def delete_var(self, *args): - return _sim_services.MemoryManager_delete_var(self, *args) - - def delete_extern_var(self, *args): - return _sim_services.MemoryManager_delete_extern_var(self, *args) - - def write_checkpoint(self, *args): - return _sim_services.MemoryManager_write_checkpoint(self, *args) - - def read_checkpoint(self, *args): - return _sim_services.MemoryManager_read_checkpoint(self, *args) - - def read_checkpoint_from_string(self, *args): - return _sim_services.MemoryManager_read_checkpoint_from_string(self, *args) - - def init_from_checkpoint(self, *args): - return _sim_services.MemoryManager_init_from_checkpoint(self, *args) - - def reset_memory(self, *args): - return _sim_services.MemoryManager_reset_memory(self, *args) - - def add_attr_info(self, *args): - return _sim_services.MemoryManager_add_attr_info(self, *args) - - def add_template_name_trans(self, *args): - return _sim_services.MemoryManager_add_template_name_trans(self, *args) - - def add_var(self, *args): - return _sim_services.MemoryManager_add_var(self, *args) - - def add_vars(self, *args): - return _sim_services.MemoryManager_add_vars(self, *args) - - def ref_allocate(self, *args): - return _sim_services.MemoryManager_ref_allocate(self, *args) - - def ref_attributes(self, *args): - return _sim_services.MemoryManager_ref_attributes(self, *args) - - def ref_name_from_address(self, *args): - return _sim_services.MemoryManager_ref_name_from_address(self, *args) - - def ref_assignment(self, *args): - return _sim_services.MemoryManager_ref_assignment(self, *args) - - def ref_var(self, *args): - return _sim_services.MemoryManager_ref_var(self, *args) - - def ref_dim(self, *args): - return _sim_services.MemoryManager_ref_dim(self, *args) - - def ref_name(self, *args): - return _sim_services.MemoryManager_ref_name(self, *args) - - def get_enumerated(self, *args): - return _sim_services.MemoryManager_get_enumerated(self, *args) - - def get_size(self, *args): - return _sim_services.MemoryManager_get_size(self, *args) - - def get_truncated_size(self, *args): - return _sim_services.MemoryManager_get_truncated_size(self, *args) - - def io_get_fixed_truncated_size(self, *args): - return _sim_services.MemoryManager_io_get_fixed_truncated_size(self, *args) - - def get_alloc_info_of(self, *args): - return _sim_services.MemoryManager_get_alloc_info_of(self, *args) - - def get_alloc_info_at(self, *args): - return _sim_services.MemoryManager_get_alloc_info_at(self, *args) - - def set_name_at(self, *args): - return _sim_services.MemoryManager_set_name_at(self, *args) - - def add_checkpoint_alloc_dependency(self, *args): - return _sim_services.MemoryManager_add_checkpoint_alloc_dependency(self, *args) - - def add_shared_library_symbols(self, *args): - return _sim_services.MemoryManager_add_shared_library_symbols(self, *args) - __swig_setmethods__["dlhandles"] = _sim_services.MemoryManager_dlhandles_set - __swig_getmethods__["dlhandles"] = _sim_services.MemoryManager_dlhandles_get - if _newclass: - dlhandles = _swig_property(_sim_services.MemoryManager_dlhandles_get, _sim_services.MemoryManager_dlhandles_set) - - def get_CheckPointAgent(self, *args): - return _sim_services.MemoryManager_get_CheckPointAgent(self, *args) - - def set_CheckPointAgent(self, *args): - return _sim_services.MemoryManager_set_CheckPointAgent(self, *args) - - def reset_CheckPointAgent(self, *args): - return _sim_services.MemoryManager_reset_CheckPointAgent(self, *args) - - def write_var(self, *args): - return _sim_services.MemoryManager_write_var(self, *args) - - def write_composite_var(self, *args): - return _sim_services.MemoryManager_write_composite_var(self, *args) - - def write_array_var(self, *args): - return _sim_services.MemoryManager_write_array_var(self, *args) - - def make_decl_string(self, *args): - return _sim_services.MemoryManager_make_decl_string(self, *args) - - def io_src_sizeof_user_type(self, *args): - return _sim_services.MemoryManager_io_src_sizeof_user_type(self, *args) - - def alloc_info_map_begin(self, *args): - return _sim_services.MemoryManager_alloc_info_map_begin(self, *args) - - def alloc_info_map_end(self, *args): - return _sim_services.MemoryManager_alloc_info_map_end(self, *args) - - def variable_map_begin(self, *args): - return _sim_services.MemoryManager_variable_map_begin(self, *args) - - def variable_map_end(self, *args): - return _sim_services.MemoryManager_variable_map_end(self, *args) - __swig_setmethods__["debug_level"] = _sim_services.MemoryManager_debug_level_set - __swig_getmethods__["debug_level"] = _sim_services.MemoryManager_debug_level_get - if _newclass: - debug_level = _swig_property(_sim_services.MemoryManager_debug_level_get, _sim_services.MemoryManager_debug_level_set) - if _newclass: - emitMessage = staticmethod(_sim_services.MemoryManager_emitMessage) - else: - emitMessage = _sim_services.MemoryManager_emitMessage - if _newclass: - emitError = staticmethod(_sim_services.MemoryManager_emitError) - else: - emitError = _sim_services.MemoryManager_emitError - if _newclass: - emitWarning = staticmethod(_sim_services.MemoryManager_emitWarning) - else: - emitWarning = _sim_services.MemoryManager_emitWarning - - def write_JSON_alloc_info(self, *args): - return _sim_services.MemoryManager_write_JSON_alloc_info(self, *args) - - def write_JSON_alloc_list(self, *args): - return _sim_services.MemoryManager_write_JSON_alloc_list(self, *args) - - def set_restore_stls_default(self, *args): - return _sim_services.MemoryManager_set_restore_stls_default(self, *args) - __swig_setmethods__["restore_stls_default"] = _sim_services.MemoryManager_restore_stls_default_set - __swig_getmethods__["restore_stls_default"] = _sim_services.MemoryManager_restore_stls_default_get - if _newclass: - restore_stls_default = _swig_property(_sim_services.MemoryManager_restore_stls_default_get, _sim_services.MemoryManager_restore_stls_default_set) -MemoryManager_swigregister = _sim_services.MemoryManager_swigregister -MemoryManager_swigregister(MemoryManager) - -def MemoryManager_emitMessage(*args): - return _sim_services.MemoryManager_emitMessage(*args) -MemoryManager_emitMessage = _sim_services.MemoryManager_emitMessage - -def MemoryManager_emitError(*args): - return _sim_services.MemoryManager_emitError(*args) -MemoryManager_emitError = _sim_services.MemoryManager_emitError - -def MemoryManager_emitWarning(*args): - return _sim_services.MemoryManager_emitWarning(*args) -MemoryManager_emitWarning = _sim_services.MemoryManager_emitWarning - -class FrameDataRecordGroup(DRBinary): - __swig_setmethods__ = {} - for _s in [DRBinary]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, FrameDataRecordGroup, name, value) - __swig_getmethods__ = {} - for _s in [DRBinary]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, FrameDataRecordGroup, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_FrameDataRecordGroup(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def start_timer(self, *args): - return _sim_services.FrameDataRecordGroup_start_timer(self, *args) - - def stop_timer(self, *args): - return _sim_services.FrameDataRecordGroup_stop_timer(self, *args) - - def frame_log_clear(self, *args): - return _sim_services.FrameDataRecordGroup_frame_log_clear(self, *args) - - def adjust_time(self, *args): - return _sim_services.FrameDataRecordGroup_adjust_time(self, *args) - - def enable(self, *args): - return _sim_services.FrameDataRecordGroup_enable(self, *args) - - def add_rec_job(self, *args): - return _sim_services.FrameDataRecordGroup_add_rec_job(self, *args) - - def restart(self, *args): - return _sim_services.FrameDataRecordGroup_restart(self, *args) - - def call_function(self, *args): - return _sim_services.FrameDataRecordGroup_call_function(self, *args) - __swig_destroy__ = _sim_services.delete_FrameDataRecordGroup - __del__ = lambda self: None -FrameDataRecordGroup_swigregister = _sim_services.FrameDataRecordGroup_swigregister -FrameDataRecordGroup_swigregister(FrameDataRecordGroup) - -class timeline_t(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, timeline_t, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, timeline_t, name) - __repr__ = _swig_repr - __swig_setmethods__["trick_job"] = _sim_services.timeline_t_trick_job_set - __swig_getmethods__["trick_job"] = _sim_services.timeline_t_trick_job_get - if _newclass: - trick_job = _swig_property(_sim_services.timeline_t_trick_job_get, _sim_services.timeline_t_trick_job_set) - __swig_setmethods__["id"] = _sim_services.timeline_t_id_set - __swig_getmethods__["id"] = _sim_services.timeline_t_id_get - if _newclass: - id = _swig_property(_sim_services.timeline_t_id_get, _sim_services.timeline_t_id_set) - __swig_setmethods__["start"] = _sim_services.timeline_t_start_set - __swig_getmethods__["start"] = _sim_services.timeline_t_start_get - if _newclass: - start = _swig_property(_sim_services.timeline_t_start_get, _sim_services.timeline_t_start_set) - __swig_setmethods__["stop"] = _sim_services.timeline_t_stop_set - __swig_getmethods__["stop"] = _sim_services.timeline_t_stop_get - if _newclass: - stop = _swig_property(_sim_services.timeline_t_stop_get, _sim_services.timeline_t_stop_set) - - def __init__(self): - this = _sim_services.new_timeline_t() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_timeline_t - __del__ = lambda self: None -timeline_t_swigregister = _sim_services.timeline_t_swigregister -timeline_t_swigregister(timeline_t) - -class FrameLog(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, FrameLog, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, FrameLog, name) - __repr__ = _swig_repr - __swig_setmethods__["frame_log_flag"] = _sim_services.FrameLog_frame_log_flag_set - __swig_getmethods__["frame_log_flag"] = _sim_services.FrameLog_frame_log_flag_get - if _newclass: - frame_log_flag = _swig_property(_sim_services.FrameLog_frame_log_flag_get, _sim_services.FrameLog_frame_log_flag_set) - __swig_setmethods__["drg_users"] = _sim_services.FrameLog_drg_users_set - __swig_getmethods__["drg_users"] = _sim_services.FrameLog_drg_users_get - if _newclass: - drg_users = _swig_property(_sim_services.FrameLog_drg_users_get, _sim_services.FrameLog_drg_users_set) - __swig_setmethods__["drg_trick"] = _sim_services.FrameLog_drg_trick_set - __swig_getmethods__["drg_trick"] = _sim_services.FrameLog_drg_trick_get - if _newclass: - drg_trick = _swig_property(_sim_services.FrameLog_drg_trick_get, _sim_services.FrameLog_drg_trick_set) - __swig_setmethods__["drg_frame"] = _sim_services.FrameLog_drg_frame_set - __swig_getmethods__["drg_frame"] = _sim_services.FrameLog_drg_frame_get - if _newclass: - drg_frame = _swig_property(_sim_services.FrameLog_drg_frame_get, _sim_services.FrameLog_drg_frame_set) - __swig_setmethods__["plots_per_page"] = _sim_services.FrameLog_plots_per_page_set - __swig_getmethods__["plots_per_page"] = _sim_services.FrameLog_plots_per_page_get - if _newclass: - plots_per_page = _swig_property(_sim_services.FrameLog_plots_per_page_get, _sim_services.FrameLog_plots_per_page_set) - __swig_setmethods__["timeline"] = _sim_services.FrameLog_timeline_set - __swig_getmethods__["timeline"] = _sim_services.FrameLog_timeline_get - if _newclass: - timeline = _swig_property(_sim_services.FrameLog_timeline_get, _sim_services.FrameLog_timeline_set) - __swig_setmethods__["timeline_other"] = _sim_services.FrameLog_timeline_other_set - __swig_getmethods__["timeline_other"] = _sim_services.FrameLog_timeline_other_get - if _newclass: - timeline_other = _swig_property(_sim_services.FrameLog_timeline_other_get, _sim_services.FrameLog_timeline_other_set) - __swig_setmethods__["num_threads"] = _sim_services.FrameLog_num_threads_set - __swig_getmethods__["num_threads"] = _sim_services.FrameLog_num_threads_get - if _newclass: - num_threads = _swig_property(_sim_services.FrameLog_num_threads_get, _sim_services.FrameLog_num_threads_set) - __swig_setmethods__["tl_max_samples"] = _sim_services.FrameLog_tl_max_samples_set - __swig_getmethods__["tl_max_samples"] = _sim_services.FrameLog_tl_max_samples_get - if _newclass: - tl_max_samples = _swig_property(_sim_services.FrameLog_tl_max_samples_get, _sim_services.FrameLog_tl_max_samples_set) - __swig_setmethods__["tl_count"] = _sim_services.FrameLog_tl_count_set - __swig_getmethods__["tl_count"] = _sim_services.FrameLog_tl_count_get - if _newclass: - tl_count = _swig_property(_sim_services.FrameLog_tl_count_get, _sim_services.FrameLog_tl_count_set) - __swig_setmethods__["tl_other_count"] = _sim_services.FrameLog_tl_other_count_set - __swig_getmethods__["tl_other_count"] = _sim_services.FrameLog_tl_other_count_get - if _newclass: - tl_other_count = _swig_property(_sim_services.FrameLog_tl_other_count_get, _sim_services.FrameLog_tl_other_count_set) - __swig_setmethods__["log_init_start"] = _sim_services.FrameLog_log_init_start_set - __swig_getmethods__["log_init_start"] = _sim_services.FrameLog_log_init_start_get - if _newclass: - log_init_start = _swig_property(_sim_services.FrameLog_log_init_start_get, _sim_services.FrameLog_log_init_start_set) - __swig_setmethods__["log_init_end"] = _sim_services.FrameLog_log_init_end_set - __swig_getmethods__["log_init_end"] = _sim_services.FrameLog_log_init_end_get - if _newclass: - log_init_end = _swig_property(_sim_services.FrameLog_log_init_end_get, _sim_services.FrameLog_log_init_end_set) - __swig_setmethods__["fp_time_main"] = _sim_services.FrameLog_fp_time_main_set - __swig_getmethods__["fp_time_main"] = _sim_services.FrameLog_fp_time_main_get - if _newclass: - fp_time_main = _swig_property(_sim_services.FrameLog_fp_time_main_get, _sim_services.FrameLog_fp_time_main_set) - __swig_setmethods__["fp_time_other"] = _sim_services.FrameLog_fp_time_other_set - __swig_getmethods__["fp_time_other"] = _sim_services.FrameLog_fp_time_other_get - if _newclass: - fp_time_other = _swig_property(_sim_services.FrameLog_fp_time_other_get, _sim_services.FrameLog_fp_time_other_set) - __swig_setmethods__["time_value_attr"] = _sim_services.FrameLog_time_value_attr_set - __swig_getmethods__["time_value_attr"] = _sim_services.FrameLog_time_value_attr_get - if _newclass: - time_value_attr = _swig_property(_sim_services.FrameLog_time_value_attr_get, _sim_services.FrameLog_time_value_attr_set) - __swig_setmethods__["msg_sim_object_name"] = _sim_services.FrameLog_msg_sim_object_name_set - __swig_getmethods__["msg_sim_object_name"] = _sim_services.FrameLog_msg_sim_object_name_get - if _newclass: - msg_sim_object_name = _swig_property(_sim_services.FrameLog_msg_sim_object_name_get, _sim_services.FrameLog_msg_sim_object_name_set) - __swig_setmethods__["dr_sim_object_name"] = _sim_services.FrameLog_dr_sim_object_name_set - __swig_getmethods__["dr_sim_object_name"] = _sim_services.FrameLog_dr_sim_object_name_get - if _newclass: - dr_sim_object_name = _swig_property(_sim_services.FrameLog_dr_sim_object_name_get, _sim_services.FrameLog_dr_sim_object_name_set) - __swig_setmethods__["rt_sim_object_name"] = _sim_services.FrameLog_rt_sim_object_name_set - __swig_getmethods__["rt_sim_object_name"] = _sim_services.FrameLog_rt_sim_object_name_get - if _newclass: - rt_sim_object_name = _swig_property(_sim_services.FrameLog_rt_sim_object_name_get, _sim_services.FrameLog_rt_sim_object_name_set) - __swig_setmethods__["ms_sim_object_name"] = _sim_services.FrameLog_ms_sim_object_name_set - __swig_getmethods__["ms_sim_object_name"] = _sim_services.FrameLog_ms_sim_object_name_get - if _newclass: - ms_sim_object_name = _swig_property(_sim_services.FrameLog_ms_sim_object_name_get, _sim_services.FrameLog_ms_sim_object_name_set) - __swig_setmethods__["clock"] = _sim_services.FrameLog_clock_set - __swig_getmethods__["clock"] = _sim_services.FrameLog_clock_get - if _newclass: - clock = _swig_property(_sim_services.FrameLog_clock_get, _sim_services.FrameLog_clock_set) - - def __init__(self, *args): - this = _sim_services.new_FrameLog(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_FrameLog - __del__ = lambda self: None - - def frame_clock_start(self, *args): - return _sim_services.FrameLog_frame_clock_start(self, *args) - - def frame_clock_stop(self, *args): - return _sim_services.FrameLog_frame_clock_stop(self, *args) - - def framelog_on(self, *args): - return _sim_services.FrameLog_framelog_on(self, *args) - - def framelog_off(self, *args): - return _sim_services.FrameLog_framelog_off(self, *args) - - def default_data(self, *args): - return _sim_services.FrameLog_default_data(self, *args) - - def create_DP_files(self, *args): - return _sim_services.FrameLog_create_DP_files(self, *args) - - def set_max_samples(self, *args): - return _sim_services.FrameLog_set_max_samples(self, *args) - - def clear_data_record_info(self, *args): - return _sim_services.FrameLog_clear_data_record_info(self, *args) - - def restart(self, *args): - return _sim_services.FrameLog_restart(self, *args) - - def shutdown(self, *args): - return _sim_services.FrameLog_shutdown(self, *args) - - def set_clock(self, *args): - return _sim_services.FrameLog_set_clock(self, *args) -FrameLog_swigregister = _sim_services.FrameLog_swigregister -FrameLog_swigregister(FrameLog) - - -def frame_log_on(*args): - return _sim_services.frame_log_on(*args) -frame_log_on = _sim_services.frame_log_on - -def frame_log_off(*args): - return _sim_services.frame_log_off(*args) -frame_log_off = _sim_services.frame_log_off - -def frame_log_set_max_samples(*args): - return _sim_services.frame_log_set_max_samples(*args) -frame_log_set_max_samples = _sim_services.frame_log_set_max_samples - -def ip_parse(*args): - return _sim_services.ip_parse(*args) -ip_parse = _sim_services.ip_parse -EVENT_NOTARGET = _sim_services.EVENT_NOTARGET -EVENT_BEFORETARGET = _sim_services.EVENT_BEFORETARGET -EVENT_AFTERTARGET = _sim_services.EVENT_AFTERTARGET -class Event(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Event, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Event, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_Event - __del__ = lambda self: None - - def get_name(self, *args): - return _sim_services.Event_get_name(self, *args) - - def set_name(self, *args): - return _sim_services.Event_set_name(self, *args) - - def is_active(self, *args): - return _sim_services.Event_is_active(self, *args) - - def activate(self, *args): - return _sim_services.Event_activate(self, *args) - - def deactivate(self, *args): - return _sim_services.Event_deactivate(self, *args) - - def set_thread(self, *args): - return _sim_services.Event_set_thread(self, *args) - - def get_thread(self, *args): - return _sim_services.Event_get_thread(self, *args) - - def set_before_after(self, *args): - return _sim_services.Event_set_before_after(self, *args) - - def get_before_after(self, *args): - return _sim_services.Event_get_before_after(self, *args) - - def set_cycle(self, *args): - return _sim_services.Event_set_cycle(self, *args) - - def get_cycle(self, *args): - return _sim_services.Event_get_cycle(self, *args) - - def get_cycle_tics(self, *args): - return _sim_services.Event_get_cycle_tics(self, *args) - - def get_next_tics(self, *args): - return _sim_services.Event_get_next_tics(self, *args) - - def set_next_tics(self, *args): - return _sim_services.Event_set_next_tics(self, *args) - - def advance_next_tics(self, *args): - return _sim_services.Event_advance_next_tics(self, *args) - - def get_free_on_removal(self, *args): - return _sim_services.Event_get_free_on_removal(self, *args) - - def set_free_on_removal(self, *args): - return _sim_services.Event_set_free_on_removal(self, *args) - - def get_target_name(self, *args): - return _sim_services.Event_get_target_name(self, *args) - - def set_target_name(self, *args): - return _sim_services.Event_set_target_name(self, *args) - - def get_target_inst(self, *args): - return _sim_services.Event_get_target_inst(self, *args) - - def set_target_inst(self, *args): - return _sim_services.Event_set_target_inst(self, *args) - - def process(self, *args): - return _sim_services.Event_process(self, *args) - - def add(self, *args): - return _sim_services.Event_add(self, *args) - - def remove(self, *args): - return _sim_services.Event_remove(self, *args) - - def restart(self, *args): - return _sim_services.Event_restart(self, *args) -Event_swigregister = _sim_services.Event_swigregister -Event_swigregister(Event) - -class condition_t(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, condition_t, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, condition_t, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_condition_t(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["enabled"] = _sim_services.condition_t_enabled_set - __swig_getmethods__["enabled"] = _sim_services.condition_t_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.condition_t_enabled_get, _sim_services.condition_t_enabled_set) - __swig_setmethods__["hold"] = _sim_services.condition_t_hold_set - __swig_getmethods__["hold"] = _sim_services.condition_t_hold_get - if _newclass: - hold = _swig_property(_sim_services.condition_t_hold_get, _sim_services.condition_t_hold_set) - __swig_setmethods__["fired"] = _sim_services.condition_t_fired_set - __swig_getmethods__["fired"] = _sim_services.condition_t_fired_get - if _newclass: - fired = _swig_property(_sim_services.condition_t_fired_get, _sim_services.condition_t_fired_set) - __swig_setmethods__["fired_count"] = _sim_services.condition_t_fired_count_set - __swig_getmethods__["fired_count"] = _sim_services.condition_t_fired_count_get - if _newclass: - fired_count = _swig_property(_sim_services.condition_t_fired_count_get, _sim_services.condition_t_fired_count_set) - __swig_setmethods__["fired_time"] = _sim_services.condition_t_fired_time_set - __swig_getmethods__["fired_time"] = _sim_services.condition_t_fired_time_get - if _newclass: - fired_time = _swig_property(_sim_services.condition_t_fired_time_get, _sim_services.condition_t_fired_time_set) - __swig_setmethods__["str"] = _sim_services.condition_t_str_set - __swig_getmethods__["str"] = _sim_services.condition_t_str_get - if _newclass: - str = _swig_property(_sim_services.condition_t_str_get, _sim_services.condition_t_str_set) - __swig_setmethods__["comment"] = _sim_services.condition_t_comment_set - __swig_getmethods__["comment"] = _sim_services.condition_t_comment_get - if _newclass: - comment = _swig_property(_sim_services.condition_t_comment_get, _sim_services.condition_t_comment_set) - __swig_setmethods__["ref"] = _sim_services.condition_t_ref_set - __swig_getmethods__["ref"] = _sim_services.condition_t_ref_get - if _newclass: - ref = _swig_property(_sim_services.condition_t_ref_get, _sim_services.condition_t_ref_set) - __swig_setmethods__["job"] = _sim_services.condition_t_job_set - __swig_getmethods__["job"] = _sim_services.condition_t_job_get - if _newclass: - job = _swig_property(_sim_services.condition_t_job_get, _sim_services.condition_t_job_set) - __swig_setmethods__["cond_type"] = _sim_services.condition_t_cond_type_set - __swig_getmethods__["cond_type"] = _sim_services.condition_t_cond_type_get - if _newclass: - cond_type = _swig_property(_sim_services.condition_t_cond_type_get, _sim_services.condition_t_cond_type_set) - __swig_destroy__ = _sim_services.delete_condition_t - __del__ = lambda self: None -condition_t_swigregister = _sim_services.condition_t_swigregister -condition_t_swigregister(condition_t) - -class action_t(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, action_t, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, action_t, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_action_t(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["enabled"] = _sim_services.action_t_enabled_set - __swig_getmethods__["enabled"] = _sim_services.action_t_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.action_t_enabled_get, _sim_services.action_t_enabled_set) - __swig_setmethods__["ran"] = _sim_services.action_t_ran_set - __swig_getmethods__["ran"] = _sim_services.action_t_ran_get - if _newclass: - ran = _swig_property(_sim_services.action_t_ran_get, _sim_services.action_t_ran_set) - __swig_setmethods__["ran_count"] = _sim_services.action_t_ran_count_set - __swig_getmethods__["ran_count"] = _sim_services.action_t_ran_count_get - if _newclass: - ran_count = _swig_property(_sim_services.action_t_ran_count_get, _sim_services.action_t_ran_count_set) - __swig_setmethods__["ran_time"] = _sim_services.action_t_ran_time_set - __swig_getmethods__["ran_time"] = _sim_services.action_t_ran_time_get - if _newclass: - ran_time = _swig_property(_sim_services.action_t_ran_time_get, _sim_services.action_t_ran_time_set) - __swig_setmethods__["str"] = _sim_services.action_t_str_set - __swig_getmethods__["str"] = _sim_services.action_t_str_get - if _newclass: - str = _swig_property(_sim_services.action_t_str_get, _sim_services.action_t_str_set) - __swig_setmethods__["comment"] = _sim_services.action_t_comment_set - __swig_getmethods__["comment"] = _sim_services.action_t_comment_get - if _newclass: - comment = _swig_property(_sim_services.action_t_comment_get, _sim_services.action_t_comment_set) - __swig_setmethods__["job"] = _sim_services.action_t_job_set - __swig_getmethods__["job"] = _sim_services.action_t_job_get - if _newclass: - job = _swig_property(_sim_services.action_t_job_get, _sim_services.action_t_job_set) - __swig_setmethods__["act_type"] = _sim_services.action_t_act_type_set - __swig_getmethods__["act_type"] = _sim_services.action_t_act_type_get - if _newclass: - act_type = _swig_property(_sim_services.action_t_act_type_get, _sim_services.action_t_act_type_set) - __swig_destroy__ = _sim_services.delete_action_t - __del__ = lambda self: None -action_t_swigregister = _sim_services.action_t_swigregister -action_t_swigregister(action_t) - -class IPPythonEvent(Event): - __swig_setmethods__ = {} - for _s in [Event]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, IPPythonEvent, name, value) - __swig_getmethods__ = {} - for _s in [Event]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, IPPythonEvent, name) - __repr__ = _swig_repr - __swig_setmethods__["added"] = _sim_services.IPPythonEvent_added_set - __swig_getmethods__["added"] = _sim_services.IPPythonEvent_added_get - if _newclass: - added = _swig_property(_sim_services.IPPythonEvent_added_get, _sim_services.IPPythonEvent_added_set) - __swig_setmethods__["is_user_event"] = _sim_services.IPPythonEvent_is_user_event_set - __swig_getmethods__["is_user_event"] = _sim_services.IPPythonEvent_is_user_event_get - if _newclass: - is_user_event = _swig_property(_sim_services.IPPythonEvent_is_user_event_get, _sim_services.IPPythonEvent_is_user_event_set) - __swig_setmethods__["manual"] = _sim_services.IPPythonEvent_manual_set - __swig_getmethods__["manual"] = _sim_services.IPPythonEvent_manual_get - if _newclass: - manual = _swig_property(_sim_services.IPPythonEvent_manual_get, _sim_services.IPPythonEvent_manual_set) - __swig_setmethods__["manual_fired"] = _sim_services.IPPythonEvent_manual_fired_set - __swig_getmethods__["manual_fired"] = _sim_services.IPPythonEvent_manual_fired_get - if _newclass: - manual_fired = _swig_property(_sim_services.IPPythonEvent_manual_fired_get, _sim_services.IPPythonEvent_manual_fired_set) - __swig_setmethods__["info_msg"] = _sim_services.IPPythonEvent_info_msg_set - __swig_getmethods__["info_msg"] = _sim_services.IPPythonEvent_info_msg_get - if _newclass: - info_msg = _swig_property(_sim_services.IPPythonEvent_info_msg_get, _sim_services.IPPythonEvent_info_msg_set) - __swig_setmethods__["cond_all"] = _sim_services.IPPythonEvent_cond_all_set - __swig_getmethods__["cond_all"] = _sim_services.IPPythonEvent_cond_all_get - if _newclass: - cond_all = _swig_property(_sim_services.IPPythonEvent_cond_all_get, _sim_services.IPPythonEvent_cond_all_set) - __swig_setmethods__["fired"] = _sim_services.IPPythonEvent_fired_set - __swig_getmethods__["fired"] = _sim_services.IPPythonEvent_fired_get - if _newclass: - fired = _swig_property(_sim_services.IPPythonEvent_fired_get, _sim_services.IPPythonEvent_fired_set) - __swig_setmethods__["hold"] = _sim_services.IPPythonEvent_hold_set - __swig_getmethods__["hold"] = _sim_services.IPPythonEvent_hold_get - if _newclass: - hold = _swig_property(_sim_services.IPPythonEvent_hold_get, _sim_services.IPPythonEvent_hold_set) - __swig_setmethods__["ran"] = _sim_services.IPPythonEvent_ran_set - __swig_getmethods__["ran"] = _sim_services.IPPythonEvent_ran_get - if _newclass: - ran = _swig_property(_sim_services.IPPythonEvent_ran_get, _sim_services.IPPythonEvent_ran_set) - __swig_setmethods__["condition_count"] = _sim_services.IPPythonEvent_condition_count_set - __swig_getmethods__["condition_count"] = _sim_services.IPPythonEvent_condition_count_get - if _newclass: - condition_count = _swig_property(_sim_services.IPPythonEvent_condition_count_get, _sim_services.IPPythonEvent_condition_count_set) - __swig_setmethods__["fired_count"] = _sim_services.IPPythonEvent_fired_count_set - __swig_getmethods__["fired_count"] = _sim_services.IPPythonEvent_fired_count_get - if _newclass: - fired_count = _swig_property(_sim_services.IPPythonEvent_fired_count_get, _sim_services.IPPythonEvent_fired_count_set) - __swig_setmethods__["fired_time"] = _sim_services.IPPythonEvent_fired_time_set - __swig_getmethods__["fired_time"] = _sim_services.IPPythonEvent_fired_time_get - if _newclass: - fired_time = _swig_property(_sim_services.IPPythonEvent_fired_time_get, _sim_services.IPPythonEvent_fired_time_set) - __swig_setmethods__["action_count"] = _sim_services.IPPythonEvent_action_count_set - __swig_getmethods__["action_count"] = _sim_services.IPPythonEvent_action_count_get - if _newclass: - action_count = _swig_property(_sim_services.IPPythonEvent_action_count_get, _sim_services.IPPythonEvent_action_count_set) - __swig_setmethods__["ran_count"] = _sim_services.IPPythonEvent_ran_count_set - __swig_getmethods__["ran_count"] = _sim_services.IPPythonEvent_ran_count_get - if _newclass: - ran_count = _swig_property(_sim_services.IPPythonEvent_ran_count_get, _sim_services.IPPythonEvent_ran_count_set) - __swig_setmethods__["ran_time"] = _sim_services.IPPythonEvent_ran_time_set - __swig_getmethods__["ran_time"] = _sim_services.IPPythonEvent_ran_time_get - if _newclass: - ran_time = _swig_property(_sim_services.IPPythonEvent_ran_time_get, _sim_services.IPPythonEvent_ran_time_set) - __swig_setmethods__["condition_list"] = _sim_services.IPPythonEvent_condition_list_set - __swig_getmethods__["condition_list"] = _sim_services.IPPythonEvent_condition_list_get - if _newclass: - condition_list = _swig_property(_sim_services.IPPythonEvent_condition_list_get, _sim_services.IPPythonEvent_condition_list_set) - __swig_setmethods__["action_list"] = _sim_services.IPPythonEvent_action_list_set - __swig_getmethods__["action_list"] = _sim_services.IPPythonEvent_action_list_get - if _newclass: - action_list = _swig_property(_sim_services.IPPythonEvent_action_list_get, _sim_services.IPPythonEvent_action_list_set) - - def __init__(self, *args): - this = _sim_services.new_IPPythonEvent(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_IPPythonEvent - __del__ = lambda self: None - - def condition_all(self, *args): - return _sim_services.IPPythonEvent_condition_all(self, *args) - - def condition_any(self, *args): - return _sim_services.IPPythonEvent_condition_any(self, *args) - - def manual_on(self, *args): - return _sim_services.IPPythonEvent_manual_on(self, *args) - - def manual_fire(self, *args): - return _sim_services.IPPythonEvent_manual_fire(self, *args) - - def manual_off(self, *args): - return _sim_services.IPPythonEvent_manual_off(self, *args) - - def manual_done(self, *args): - return _sim_services.IPPythonEvent_manual_done(self, *args) - if _newclass: - set_event_info_msg_on = staticmethod(_sim_services.IPPythonEvent_set_event_info_msg_on) - else: - set_event_info_msg_on = _sim_services.IPPythonEvent_set_event_info_msg_on - if _newclass: - set_event_info_msg_off = staticmethod(_sim_services.IPPythonEvent_set_event_info_msg_off) - else: - set_event_info_msg_off = _sim_services.IPPythonEvent_set_event_info_msg_off - if _newclass: - terminate_on_event_parse_error = staticmethod(_sim_services.IPPythonEvent_terminate_on_event_parse_error) - else: - terminate_on_event_parse_error = _sim_services.IPPythonEvent_terminate_on_event_parse_error - - def restart(self, *args): - return _sim_services.IPPythonEvent_restart(self, *args) - - def condition(self, *args): - return _sim_services.IPPythonEvent_condition(self, *args) - - def condition_var(self, *args): - return _sim_services.IPPythonEvent_condition_var(self, *args) - - def condition_job(self, *args): - return _sim_services.IPPythonEvent_condition_job(self, *args) - - def condition_hold_on(self, *args): - return _sim_services.IPPythonEvent_condition_hold_on(self, *args) - - def condition_hold_off(self, *args): - return _sim_services.IPPythonEvent_condition_hold_off(self, *args) - - def condition_enable(self, *args): - return _sim_services.IPPythonEvent_condition_enable(self, *args) - - def condition_disable(self, *args): - return _sim_services.IPPythonEvent_condition_disable(self, *args) - - def condition_fired(self, *args): - return _sim_services.IPPythonEvent_condition_fired(self, *args) - - def condition_fired_count(self, *args): - return _sim_services.IPPythonEvent_condition_fired_count(self, *args) - - def condition_fired_time(self, *args): - return _sim_services.IPPythonEvent_condition_fired_time(self, *args) - - def condition_string(self, *args): - return _sim_services.IPPythonEvent_condition_string(self, *args) - - def action(self, *args): - return _sim_services.IPPythonEvent_action(self, *args) - - def action_job(self, *args): - return _sim_services.IPPythonEvent_action_job(self, *args) - - def action_job_on(self, *args): - return _sim_services.IPPythonEvent_action_job_on(self, *args) - - def action_job_off(self, *args): - return _sim_services.IPPythonEvent_action_job_off(self, *args) - - def action_enable(self, *args): - return _sim_services.IPPythonEvent_action_enable(self, *args) - - def action_disable(self, *args): - return _sim_services.IPPythonEvent_action_disable(self, *args) - - def action_ran(self, *args): - return _sim_services.IPPythonEvent_action_ran(self, *args) - - def action_ran_count(self, *args): - return _sim_services.IPPythonEvent_action_ran_count(self, *args) - - def action_ran_time(self, *args): - return _sim_services.IPPythonEvent_action_ran_time(self, *args) - - def process(self, *args): - return _sim_services.IPPythonEvent_process(self, *args) - - def process_user_event(self, *args): - return _sim_services.IPPythonEvent_process_user_event(self, *args) - - def add(self, *args): - return _sim_services.IPPythonEvent_add(self, *args) - - def remove(self, *args): - return _sim_services.IPPythonEvent_remove(self, *args) - if _newclass: - set_python_processor = staticmethod(_sim_services.IPPythonEvent_set_python_processor) - else: - set_python_processor = _sim_services.IPPythonEvent_set_python_processor - if _newclass: - set_mtv = staticmethod(_sim_services.IPPythonEvent_set_mtv) - else: - set_mtv = _sim_services.IPPythonEvent_set_mtv - - def __getitem__(self, *args): - return _sim_services.IPPythonEvent___getitem__(self, *args) - - def __len__(self, *args): - return _sim_services.IPPythonEvent___len__(self, *args) -IPPythonEvent_swigregister = _sim_services.IPPythonEvent_swigregister -IPPythonEvent_swigregister(IPPythonEvent) - -def IPPythonEvent_set_event_info_msg_on(*args): - return _sim_services.IPPythonEvent_set_event_info_msg_on(*args) -IPPythonEvent_set_event_info_msg_on = _sim_services.IPPythonEvent_set_event_info_msg_on - -def IPPythonEvent_set_event_info_msg_off(*args): - return _sim_services.IPPythonEvent_set_event_info_msg_off(*args) -IPPythonEvent_set_event_info_msg_off = _sim_services.IPPythonEvent_set_event_info_msg_off - -def IPPythonEvent_terminate_on_event_parse_error(*args): - return _sim_services.IPPythonEvent_terminate_on_event_parse_error(*args) -IPPythonEvent_terminate_on_event_parse_error = _sim_services.IPPythonEvent_terminate_on_event_parse_error - -def IPPythonEvent_set_python_processor(*args): - return _sim_services.IPPythonEvent_set_python_processor(*args) -IPPythonEvent_set_python_processor = _sim_services.IPPythonEvent_set_python_processor - -def IPPythonEvent_set_mtv(*args): - return _sim_services.IPPythonEvent_set_mtv(*args) -IPPythonEvent_set_mtv = _sim_services.IPPythonEvent_set_mtv - - -def ippython_new_event(*args): - return _sim_services.ippython_new_event(*args) -ippython_new_event = _sim_services.ippython_new_event - -def ippython_delete_event(*args): - return _sim_services.ippython_delete_event(*args) -ippython_delete_event = _sim_services.ippython_delete_event - -def ippython_add_event(*args): - return _sim_services.ippython_add_event(*args) -ippython_add_event = _sim_services.ippython_add_event - -def ippython_add_event_before(*args): - return _sim_services.ippython_add_event_before(*args) -ippython_add_event_before = _sim_services.ippython_add_event_before - -def ippython_add_event_after(*args): - return _sim_services.ippython_add_event_after(*args) -ippython_add_event_after = _sim_services.ippython_add_event_after - -def ippython_add_read(*args): - return _sim_services.ippython_add_read(*args) -ippython_add_read = _sim_services.ippython_add_read - -def ippython_manual_on(*args): - return _sim_services.ippython_manual_on(*args) -ippython_manual_on = _sim_services.ippython_manual_on - -def ippython_manual_fire(*args): - return _sim_services.ippython_manual_fire(*args) -ippython_manual_fire = _sim_services.ippython_manual_fire - -def ippython_manual_off(*args): - return _sim_services.ippython_manual_off(*args) -ippython_manual_off = _sim_services.ippython_manual_off - -def ippython_manual_done(*args): - return _sim_services.ippython_manual_done(*args) -ippython_manual_done = _sim_services.ippython_manual_done - -def castAsTrick__IPPythonEvent(*args): - return _sim_services.castAsTrick__IPPythonEvent(*args) -castAsTrick__IPPythonEvent = _sim_services.castAsTrick__IPPythonEvent -class MTV(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MTV, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MTV, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MTV(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["dummy_event"] = _sim_services.MTV_dummy_event_set - __swig_getmethods__["dummy_event"] = _sim_services.MTV_dummy_event_get - if _newclass: - dummy_event = _swig_property(_sim_services.MTV_dummy_event_get, _sim_services.MTV_dummy_event_set) - __swig_setmethods__["mtv_list"] = _sim_services.MTV_mtv_list_set - __swig_getmethods__["mtv_list"] = _sim_services.MTV_mtv_list_get - if _newclass: - mtv_list = _swig_property(_sim_services.MTV_mtv_list_get, _sim_services.MTV_mtv_list_set) - __swig_setmethods__["mtv_count"] = _sim_services.MTV_mtv_count_set - __swig_getmethods__["mtv_count"] = _sim_services.MTV_mtv_count_get - if _newclass: - mtv_count = _swig_property(_sim_services.MTV_mtv_count_get, _sim_services.MTV_mtv_count_set) - __swig_setmethods__["mtv_update_ticker"] = _sim_services.MTV_mtv_update_ticker_set - __swig_getmethods__["mtv_update_ticker"] = _sim_services.MTV_mtv_update_ticker_get - if _newclass: - mtv_update_ticker = _swig_property(_sim_services.MTV_mtv_update_ticker_get, _sim_services.MTV_mtv_update_ticker_set) - - def add_event(self, *args): - return _sim_services.MTV_add_event(self, *args) - - def delete_event(self, *args): - return _sim_services.MTV_delete_event(self, *args) - - def get_event(self, *args): - return _sim_services.MTV_get_event(self, *args) - - def send_event_data(self, *args): - return _sim_services.MTV_send_event_data(self, *args) - __swig_destroy__ = _sim_services.delete_MTV - __del__ = lambda self: None -MTV_swigregister = _sim_services.MTV_swigregister -MTV_swigregister(MTV) - - -def mtv_add_event(*args): - return _sim_services.mtv_add_event(*args) -mtv_add_event = _sim_services.mtv_add_event - -def mtv_delete_event(*args): - return _sim_services.mtv_delete_event(*args) -mtv_delete_event = _sim_services.mtv_delete_event - -def mtv_get_event(*args): - return _sim_services.mtv_get_event(*args) -mtv_get_event = _sim_services.mtv_get_event - -def mtv_send_event_data(*args): - return _sim_services.mtv_send_event_data(*args) -mtv_send_event_data = _sim_services.mtv_send_event_data -class EventInstrument(InstrumentBase): - __swig_setmethods__ = {} - for _s in [InstrumentBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, EventInstrument, name, value) - __swig_getmethods__ = {} - for _s in [InstrumentBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, EventInstrument, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_EventInstrument(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def call(self, *args): - return _sim_services.EventInstrument_call(self, *args) - - def get_event(self, *args): - return _sim_services.EventInstrument_get_event(self, *args) - __swig_destroy__ = _sim_services.delete_EventInstrument - __del__ = lambda self: None -EventInstrument_swigregister = _sim_services.EventInstrument_swigregister -EventInstrument_swigregister(EventInstrument) - -class EventProcessor(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, EventProcessor, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, EventProcessor, name) - __repr__ = _swig_repr - - def set_process_event_job(self, *args): - return _sim_services.EventProcessor_set_process_event_job(self, *args) - - def add_event(self, *args): - return _sim_services.EventProcessor_add_event(self, *args) - - def remove_event(self, *args): - return _sim_services.EventProcessor_remove_event(self, *args) - - def add_pending_events(self, *args): - return _sim_services.EventProcessor_add_pending_events(self, *args) - - def process_event(self, *args): - return _sim_services.EventProcessor_process_event(self, *args) - - def preload_checkpoint(self, *args): - return _sim_services.EventProcessor_preload_checkpoint(self, *args) - - def __init__(self): - this = _sim_services.new_EventProcessor() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_EventProcessor - __del__ = lambda self: None -EventProcessor_swigregister = _sim_services.EventProcessor_swigregister -EventProcessor_swigregister(EventProcessor) - -class EventManager(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, EventManager, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, EventManager, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_EventManager(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def get_event(self, *args): - return _sim_services.EventManager_get_event(self, *args) - - def add_event(self, *args): - return _sim_services.EventManager_add_event(self, *args) - - def add_event_before(self, *args): - return _sim_services.EventManager_add_event_before(self, *args) - - def add_event_after(self, *args): - return _sim_services.EventManager_add_event_after(self, *args) - - def activate_event(self, *args): - return _sim_services.EventManager_activate_event(self, *args) - - def deactivate_event(self, *args): - return _sim_services.EventManager_deactivate_event(self, *args) - - def remove_event(self, *args): - return _sim_services.EventManager_remove_event(self, *args) - - def time_tic_changed(self, *args): - return _sim_services.EventManager_time_tic_changed(self, *args) - - def preload_checkpoint(self, *args): - return _sim_services.EventManager_preload_checkpoint(self, *args) - - def restart(self, *args): - return _sim_services.EventManager_restart(self, *args) - - def add_event_processor(self, *args): - return _sim_services.EventManager_add_event_processor(self, *args) - __swig_destroy__ = _sim_services.delete_EventManager - __del__ = lambda self: None -EventManager_swigregister = _sim_services.EventManager_swigregister -EventManager_swigregister(EventManager) - - -def event_manager_get_event(*args): - return _sim_services.event_manager_get_event(*args) -event_manager_get_event = _sim_services.event_manager_get_event - -def event_manager_add_event(*args): - return _sim_services.event_manager_add_event(*args) -event_manager_add_event = _sim_services.event_manager_add_event - -def event_manager_add_event_before(*args): - return _sim_services.event_manager_add_event_before(*args) -event_manager_add_event_before = _sim_services.event_manager_add_event_before - -def event_manager_add_event_after(*args): - return _sim_services.event_manager_add_event_after(*args) -event_manager_add_event_after = _sim_services.event_manager_add_event_after - -def event_manager_remove_event(*args): - return _sim_services.event_manager_remove_event(*args) -event_manager_remove_event = _sim_services.event_manager_remove_event -class JITEvent(Event): - __swig_setmethods__ = {} - for _s in [Event]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, JITEvent, name, value) - __swig_getmethods__ = {} - for _s in [Event]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, JITEvent, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_JITEvent(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def process(self, *args): - return _sim_services.JITEvent_process(self, *args) - - def add(self, *args): - return _sim_services.JITEvent_add(self, *args) - - def remove(self, *args): - return _sim_services.JITEvent_remove(self, *args) - - def restart(self, *args): - return _sim_services.JITEvent_restart(self, *args) - __swig_setmethods__["func_name"] = _sim_services.JITEvent_func_name_set - __swig_getmethods__["func_name"] = _sim_services.JITEvent_func_name_get - if _newclass: - func_name = _swig_property(_sim_services.JITEvent_func_name_get, _sim_services.JITEvent_func_name_set) - __swig_destroy__ = _sim_services.delete_JITEvent - __del__ = lambda self: None -JITEvent_swigregister = _sim_services.JITEvent_swigregister -JITEvent_swigregister(JITEvent) - -class JITLibInfo(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, JITLibInfo, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, JITLibInfo, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_JITLibInfo(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["library_name"] = _sim_services.JITLibInfo_library_name_set - __swig_getmethods__["library_name"] = _sim_services.JITLibInfo_library_name_get - if _newclass: - library_name = _swig_property(_sim_services.JITLibInfo_library_name_get, _sim_services.JITLibInfo_library_name_set) - __swig_setmethods__["handle"] = _sim_services.JITLibInfo_handle_set - __swig_getmethods__["handle"] = _sim_services.JITLibInfo_handle_get - if _newclass: - handle = _swig_property(_sim_services.JITLibInfo_handle_get, _sim_services.JITLibInfo_handle_set) - - def find_symbol(self, *args): - return _sim_services.JITLibInfo_find_symbol(self, *args) - __swig_destroy__ = _sim_services.delete_JITLibInfo - __del__ = lambda self: None -JITLibInfo_swigregister = _sim_services.JITLibInfo_swigregister -JITLibInfo_swigregister(JITLibInfo) - -class JITInputFile(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, JITInputFile, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, JITInputFile, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_JITInputFile(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def process_sim_args(self, *args): - return _sim_services.JITInputFile_process_sim_args(self, *args) - - def init(self, *args): - return _sim_services.JITInputFile_init(self, *args) - - def compile(self, *args): - return _sim_services.JITInputFile_compile(self, *args) - - def run(self, *args): - return _sim_services.JITInputFile_run(self, *args) - - def compile_and_run(self, *args): - return _sim_services.JITInputFile_compile_and_run(self, *args) - - def add_library(self, *args): - return _sim_services.JITInputFile_add_library(self, *args) - - def find_symbol(self, *args): - return _sim_services.JITInputFile_find_symbol(self, *args) - __swig_destroy__ = _sim_services.delete_JITInputFile - __del__ = lambda self: None -JITInputFile_swigregister = _sim_services.JITInputFile_swigregister -JITInputFile_swigregister(JITInputFile) - - -def jit_compile(*args): - return _sim_services.jit_compile(*args) -jit_compile = _sim_services.jit_compile - -def jit_run(*args): - return _sim_services.jit_run(*args) -jit_run = _sim_services.jit_run - -def jit_compile_and_run(*args): - return _sim_services.jit_compile_and_run(*args) -jit_compile_and_run = _sim_services.jit_compile_and_run - -def jit_add_library(*args): - return _sim_services.jit_add_library(*args) -jit_add_library = _sim_services.jit_add_library - -def jit_find_symbol(*args): - return _sim_services.jit_find_symbol(*args) -jit_find_symbol = _sim_services.jit_find_symbol - -def jit_add_read(*args): - return _sim_services.jit_add_read(*args) -jit_add_read = _sim_services.jit_add_read - -def jit_add_event(*args): - return _sim_services.jit_add_event(*args) -jit_add_event = _sim_services.jit_add_event - -def jit_add_event_before(*args): - return _sim_services.jit_add_event_before(*args) -jit_add_event_before = _sim_services.jit_add_event_before - -def jit_add_event_after(*args): - return _sim_services.jit_add_event_after(*args) -jit_add_event_after = _sim_services.jit_add_event_after -TRICK_ERROR_ALL = _sim_services.TRICK_ERROR_ALL -TRICK_ERROR_TRIVIAL = _sim_services.TRICK_ERROR_TRIVIAL -TRICK_ERROR_ADVISORY = _sim_services.TRICK_ERROR_ADVISORY -TRICK_ERROR_CAUTION = _sim_services.TRICK_ERROR_CAUTION -TRICK_ERROR_WARNING = _sim_services.TRICK_ERROR_WARNING -TRICK_ERROR_ALERT = _sim_services.TRICK_ERROR_ALERT -TRICK_ERROR_FATAL = _sim_services.TRICK_ERROR_FATAL -TRICK_ERROR_ABORT = _sim_services.TRICK_ERROR_ABORT -TRICK_ERROR_SILENT = _sim_services.TRICK_ERROR_SILENT -class TrickErrorHndlr(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TrickErrorHndlr, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TrickErrorHndlr, name) - __repr__ = _swig_repr - __swig_setmethods__["error_func"] = _sim_services.TrickErrorHndlr_error_func_set - __swig_getmethods__["error_func"] = _sim_services.TrickErrorHndlr_error_func_get - if _newclass: - error_func = _swig_property(_sim_services.TrickErrorHndlr_error_func_get, _sim_services.TrickErrorHndlr_error_func_set) - __swig_setmethods__["data_ptr"] = _sim_services.TrickErrorHndlr_data_ptr_set - __swig_getmethods__["data_ptr"] = _sim_services.TrickErrorHndlr_data_ptr_get - if _newclass: - data_ptr = _swig_property(_sim_services.TrickErrorHndlr_data_ptr_get, _sim_services.TrickErrorHndlr_data_ptr_set) - __swig_setmethods__["report_level"] = _sim_services.TrickErrorHndlr_report_level_set - __swig_getmethods__["report_level"] = _sim_services.TrickErrorHndlr_report_level_get - if _newclass: - report_level = _swig_property(_sim_services.TrickErrorHndlr_report_level_get, _sim_services.TrickErrorHndlr_report_level_set) - __swig_setmethods__["use_send_hs"] = _sim_services.TrickErrorHndlr_use_send_hs_set - __swig_getmethods__["use_send_hs"] = _sim_services.TrickErrorHndlr_use_send_hs_get - if _newclass: - use_send_hs = _swig_property(_sim_services.TrickErrorHndlr_use_send_hs_get, _sim_services.TrickErrorHndlr_use_send_hs_set) - __swig_setmethods__["report_stream"] = _sim_services.TrickErrorHndlr_report_stream_set - __swig_getmethods__["report_stream"] = _sim_services.TrickErrorHndlr_report_stream_get - if _newclass: - report_stream = _swig_property(_sim_services.TrickErrorHndlr_report_stream_get, _sim_services.TrickErrorHndlr_report_stream_set) - - def __init__(self): - this = _sim_services.new_TrickErrorHndlr() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TrickErrorHndlr - __del__ = lambda self: None -TrickErrorHndlr_swigregister = _sim_services.TrickErrorHndlr_swigregister -TrickErrorHndlr_swigregister(TrickErrorHndlr) - - -def trick_error_func_default(*args): - return _sim_services.trick_error_func_default(*args) -trick_error_func_default = _sim_services.trick_error_func_default - -def trick_error_init(*args): - return _sim_services.trick_error_init(*args) -trick_error_init = _sim_services.trick_error_init - -def trick_error_shutdown(*args): - return _sim_services.trick_error_shutdown(*args) -trick_error_shutdown = _sim_services.trick_error_shutdown - -def trick_error_set_func(*args): - return _sim_services.trick_error_set_func(*args) -trick_error_set_func = _sim_services.trick_error_set_func - -def trick_error_set_data(*args): - return _sim_services.trick_error_set_data(*args) -trick_error_set_data = _sim_services.trick_error_set_data - -def trick_error_set_report_level(*args): - return _sim_services.trick_error_set_report_level(*args) -trick_error_set_report_level = _sim_services.trick_error_set_report_level - -def trick_error_set_stream(*args): - return _sim_services.trick_error_set_stream(*args) -trick_error_set_stream = _sim_services.trick_error_set_stream - -def trick_error_set_all_streams(*args): - return _sim_services.trick_error_set_all_streams(*args) -trick_error_set_all_streams = _sim_services.trick_error_set_all_streams - -def trick_error_copy_streams(*args): - return _sim_services.trick_error_copy_streams(*args) -trick_error_copy_streams = _sim_services.trick_error_copy_streams - -def trick_error_set_send_hs_flag(*args): - return _sim_services.trick_error_set_send_hs_flag(*args) -trick_error_set_send_hs_flag = _sim_services.trick_error_set_send_hs_flag - -def trick_error_set_all_send_hs_flags(*args): - return _sim_services.trick_error_set_all_send_hs_flags(*args) -trick_error_set_all_send_hs_flags = _sim_services.trick_error_set_all_send_hs_flags - -def trick_error_copy_send_hs_flags(*args): - return _sim_services.trick_error_copy_send_hs_flags(*args) -trick_error_copy_send_hs_flags = _sim_services.trick_error_copy_send_hs_flags - -def trick_error_get_func(*args): - return _sim_services.trick_error_get_func(*args) -trick_error_get_func = _sim_services.trick_error_get_func - -def trick_error_get_data(*args): - return _sim_services.trick_error_get_data(*args) -trick_error_get_data = _sim_services.trick_error_get_data - -def trick_error_get_report_level(*args): - return _sim_services.trick_error_get_report_level(*args) -trick_error_get_report_level = _sim_services.trick_error_get_report_level - -def trick_error_get_stream(*args): - return _sim_services.trick_error_get_stream(*args) -trick_error_get_stream = _sim_services.trick_error_get_stream - -def trick_error_get_curr_stream(*args): - return _sim_services.trick_error_get_curr_stream(*args) -trick_error_get_curr_stream = _sim_services.trick_error_get_curr_stream - -def trick_error_get_send_hs_flag(*args): - return _sim_services.trick_error_get_send_hs_flag(*args) -trick_error_get_send_hs_flag = _sim_services.trick_error_get_send_hs_flag - -def trick_error_get_curr_send_hs_flag(*args): - return _sim_services.trick_error_get_curr_send_hs_flag(*args) -trick_error_get_curr_send_hs_flag = _sim_services.trick_error_get_curr_send_hs_flag - -def trick_error_report(*args): - return _sim_services.trick_error_report(*args) -trick_error_report = _sim_services.trick_error_report -TC_NOSIGNAL = _sim_services.TC_NOSIGNAL -TC_SUCCESS = _sim_services.TC_SUCCESS -TC_COULD_NOT_OPEN_SOCKET = _sim_services.TC_COULD_NOT_OPEN_SOCKET -TC_COULD_NOT_BIND_SOCKET = _sim_services.TC_COULD_NOT_BIND_SOCKET -TC_COULD_NOT_LISTEN_SOCKET = _sim_services.TC_COULD_NOT_LISTEN_SOCKET -TC_COULD_NOT_ACCEPT = _sim_services.TC_COULD_NOT_ACCEPT -TC_DRIVER_NOT_INSTALLED = _sim_services.TC_DRIVER_NOT_INSTALLED -TC_DRIVER_ALREADY_INSTALLED = _sim_services.TC_DRIVER_ALREADY_INSTALLED -TC_DRIVER_IS_NULL = _sim_services.TC_DRIVER_IS_NULL -TC_HOST_NOT_FOUND = _sim_services.TC_HOST_NOT_FOUND -TC_COULD_NOT_CONNECT = _sim_services.TC_COULD_NOT_CONNECT -TC_RESOURCE_EXCEEDED = _sim_services.TC_RESOURCE_EXCEEDED -TC_DRIVER_NOT_FOUND = _sim_services.TC_DRIVER_NOT_FOUND -TC_DRIVER_ALREADY_DISCONNECTED = _sim_services.TC_DRIVER_ALREADY_DISCONNECTED -TC_CONN_DISABLED = _sim_services.TC_CONN_DISABLED -TC_COULD_NOT_SET_TTL = _sim_services.TC_COULD_NOT_SET_TTL -TC_COULD_NOT_ADD_MEMBERSHIP = _sim_services.TC_COULD_NOT_ADD_MEMBERSHIP -TC_EWOULDBLOCK = _sim_services.TC_EWOULDBLOCK -TC_READWRITE_TIMEOUT = _sim_services.TC_READWRITE_TIMEOUT -TC_BROKEN_PIPE = _sim_services.TC_BROKEN_PIPE -MAX_BLOCKIO_TIMEOUT_LIMIT = _sim_services.MAX_BLOCKIO_TIMEOUT_LIMIT -TRICKCOMM_SOCKET_PROTO = _sim_services.TRICKCOMM_SOCKET_PROTO -TRICKCOMM_INVALID_SOCKET = _sim_services.TRICKCOMM_INVALID_SOCKET -TC_TAG_LENGTH = _sim_services.TC_TAG_LENGTH -TC_BYTE_ORDER_NDX = _sim_services.TC_BYTE_ORDER_NDX -TC_LONG_SIZE_NDX = _sim_services.TC_LONG_SIZE_NDX -TC_BYTE_INFO_LENGTH = _sim_services.TC_BYTE_INFO_LENGTH -TC_MULT_PORT = _sim_services.TC_MULT_PORT -TC_MULT_GROUP = _sim_services.TC_MULT_GROUP -TC_COMM_FALSE = _sim_services.TC_COMM_FALSE -TC_COMM_TRUE = _sim_services.TC_COMM_TRUE -TC_COMM_NO = _sim_services.TC_COMM_NO -TC_COMM_YES = _sim_services.TC_COMM_YES -TC_COMM_DISABLED = _sim_services.TC_COMM_DISABLED -TC_COMM_ENABLED = _sim_services.TC_COMM_ENABLED -TC_COMM_BLOCKIO = _sim_services.TC_COMM_BLOCKIO -TC_COMM_NOBLOCKIO = _sim_services.TC_COMM_NOBLOCKIO -TC_COMM_TIMED_BLOCKIO = _sim_services.TC_COMM_TIMED_BLOCKIO -TC_COMM_ALL_OR_NOTHING = _sim_services.TC_COMM_ALL_OR_NOTHING -class TCDevice(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TCDevice, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TCDevice, name) - __repr__ = _swig_repr - __swig_setmethods__["socket"] = _sim_services.TCDevice_socket_set - __swig_getmethods__["socket"] = _sim_services.TCDevice_socket_get - if _newclass: - socket = _swig_property(_sim_services.TCDevice_socket_get, _sim_services.TCDevice_socket_set) - __swig_setmethods__["socket_type"] = _sim_services.TCDevice_socket_type_set - __swig_getmethods__["socket_type"] = _sim_services.TCDevice_socket_type_get - if _newclass: - socket_type = _swig_property(_sim_services.TCDevice_socket_type_get, _sim_services.TCDevice_socket_type_set) - __swig_setmethods__["disabled"] = _sim_services.TCDevice_disabled_set - __swig_getmethods__["disabled"] = _sim_services.TCDevice_disabled_get - if _newclass: - disabled = _swig_property(_sim_services.TCDevice_disabled_get, _sim_services.TCDevice_disabled_set) - __swig_setmethods__["disable_handshaking"] = _sim_services.TCDevice_disable_handshaking_set - __swig_getmethods__["disable_handshaking"] = _sim_services.TCDevice_disable_handshaking_get - if _newclass: - disable_handshaking = _swig_property(_sim_services.TCDevice_disable_handshaking_get, _sim_services.TCDevice_disable_handshaking_set) - __swig_setmethods__["blockio_limit"] = _sim_services.TCDevice_blockio_limit_set - __swig_getmethods__["blockio_limit"] = _sim_services.TCDevice_blockio_limit_get - if _newclass: - blockio_limit = _swig_property(_sim_services.TCDevice_blockio_limit_get, _sim_services.TCDevice_blockio_limit_set) - __swig_setmethods__["blockio_type"] = _sim_services.TCDevice_blockio_type_set - __swig_getmethods__["blockio_type"] = _sim_services.TCDevice_blockio_type_get - if _newclass: - blockio_type = _swig_property(_sim_services.TCDevice_blockio_type_get, _sim_services.TCDevice_blockio_type_set) - __swig_setmethods__["byte_info"] = _sim_services.TCDevice_byte_info_set - __swig_getmethods__["byte_info"] = _sim_services.TCDevice_byte_info_get - if _newclass: - byte_info = _swig_property(_sim_services.TCDevice_byte_info_get, _sim_services.TCDevice_byte_info_set) - __swig_setmethods__["client_id"] = _sim_services.TCDevice_client_id_set - __swig_getmethods__["client_id"] = _sim_services.TCDevice_client_id_get - if _newclass: - client_id = _swig_property(_sim_services.TCDevice_client_id_get, _sim_services.TCDevice_client_id_set) - __swig_setmethods__["client_tag"] = _sim_services.TCDevice_client_tag_set - __swig_getmethods__["client_tag"] = _sim_services.TCDevice_client_tag_get - if _newclass: - client_tag = _swig_property(_sim_services.TCDevice_client_tag_get, _sim_services.TCDevice_client_tag_set) - __swig_setmethods__["client_addr"] = _sim_services.TCDevice_client_addr_set - __swig_getmethods__["client_addr"] = _sim_services.TCDevice_client_addr_get - if _newclass: - client_addr = _swig_property(_sim_services.TCDevice_client_addr_get, _sim_services.TCDevice_client_addr_set) - __swig_setmethods__["error_handler"] = _sim_services.TCDevice_error_handler_set - __swig_getmethods__["error_handler"] = _sim_services.TCDevice_error_handler_get - if _newclass: - error_handler = _swig_property(_sim_services.TCDevice_error_handler_get, _sim_services.TCDevice_error_handler_set) - __swig_setmethods__["hostname"] = _sim_services.TCDevice_hostname_set - __swig_getmethods__["hostname"] = _sim_services.TCDevice_hostname_get - if _newclass: - hostname = _swig_property(_sim_services.TCDevice_hostname_get, _sim_services.TCDevice_hostname_set) - __swig_setmethods__["port"] = _sim_services.TCDevice_port_set - __swig_getmethods__["port"] = _sim_services.TCDevice_port_get - if _newclass: - port = _swig_property(_sim_services.TCDevice_port_get, _sim_services.TCDevice_port_set) - __swig_setmethods__["remoteServAddr"] = _sim_services.TCDevice_remoteServAddr_set - __swig_getmethods__["remoteServAddr"] = _sim_services.TCDevice_remoteServAddr_get - if _newclass: - remoteServAddr = _swig_property(_sim_services.TCDevice_remoteServAddr_get, _sim_services.TCDevice_remoteServAddr_set) - __swig_setmethods__["mcast_group"] = _sim_services.TCDevice_mcast_group_set - __swig_getmethods__["mcast_group"] = _sim_services.TCDevice_mcast_group_get - if _newclass: - mcast_group = _swig_property(_sim_services.TCDevice_mcast_group_get, _sim_services.TCDevice_mcast_group_set) - __swig_setmethods__["ttl"] = _sim_services.TCDevice_ttl_set - __swig_getmethods__["ttl"] = _sim_services.TCDevice_ttl_get - if _newclass: - ttl = _swig_property(_sim_services.TCDevice_ttl_get, _sim_services.TCDevice_ttl_set) - __swig_setmethods__["cliAddr"] = _sim_services.TCDevice_cliAddr_set - __swig_getmethods__["cliAddr"] = _sim_services.TCDevice_cliAddr_get - if _newclass: - cliAddr = _swig_property(_sim_services.TCDevice_cliAddr_get, _sim_services.TCDevice_cliAddr_set) - - def __init__(self): - this = _sim_services.new_TCDevice() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TCDevice - __del__ = lambda self: None -TCDevice_swigregister = _sim_services.TCDevice_swigregister -TCDevice_swigregister(TCDevice) - -class SEND_ME(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SEND_ME, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SEND_ME, name) - __repr__ = _swig_repr - __swig_setmethods__["addr"] = _sim_services.SEND_ME_addr_set - __swig_getmethods__["addr"] = _sim_services.SEND_ME_addr_get - if _newclass: - addr = _swig_property(_sim_services.SEND_ME_addr_get, _sim_services.SEND_ME_addr_set) - __swig_setmethods__["port"] = _sim_services.SEND_ME_port_set - __swig_getmethods__["port"] = _sim_services.SEND_ME_port_get - if _newclass: - port = _swig_property(_sim_services.SEND_ME_port_get, _sim_services.SEND_ME_port_set) - __swig_setmethods__["pid"] = _sim_services.SEND_ME_pid_set - __swig_getmethods__["pid"] = _sim_services.SEND_ME_pid_get - if _newclass: - pid = _swig_property(_sim_services.SEND_ME_pid_get, _sim_services.SEND_ME_pid_set) - __swig_setmethods__["conn_initiated"] = _sim_services.SEND_ME_conn_initiated_set - __swig_getmethods__["conn_initiated"] = _sim_services.SEND_ME_conn_initiated_get - if _newclass: - conn_initiated = _swig_property(_sim_services.SEND_ME_conn_initiated_get, _sim_services.SEND_ME_conn_initiated_set) - __swig_setmethods__["disabled"] = _sim_services.SEND_ME_disabled_set - __swig_getmethods__["disabled"] = _sim_services.SEND_ME_disabled_get - if _newclass: - disabled = _swig_property(_sim_services.SEND_ME_disabled_get, _sim_services.SEND_ME_disabled_set) - __swig_setmethods__["my_tag"] = _sim_services.SEND_ME_my_tag_set - __swig_getmethods__["my_tag"] = _sim_services.SEND_ME_my_tag_get - if _newclass: - my_tag = _swig_property(_sim_services.SEND_ME_my_tag_get, _sim_services.SEND_ME_my_tag_set) - __swig_setmethods__["other_tag"] = _sim_services.SEND_ME_other_tag_set - __swig_getmethods__["other_tag"] = _sim_services.SEND_ME_other_tag_get - if _newclass: - other_tag = _swig_property(_sim_services.SEND_ME_other_tag_get, _sim_services.SEND_ME_other_tag_set) - - def __init__(self): - this = _sim_services.new_SEND_ME() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_SEND_ME - __del__ = lambda self: None -SEND_ME_swigregister = _sim_services.SEND_ME_swigregister -SEND_ME_swigregister(SEND_ME) - -class BC_INFO(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, BC_INFO, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, BC_INFO, name) - __repr__ = _swig_repr - __swig_setmethods__["send_me"] = _sim_services.BC_INFO_send_me_set - __swig_getmethods__["send_me"] = _sim_services.BC_INFO_send_me_get - if _newclass: - send_me = _swig_property(_sim_services.BC_INFO_send_me_get, _sim_services.BC_INFO_send_me_set) - __swig_setmethods__["device"] = _sim_services.BC_INFO_device_set - __swig_getmethods__["device"] = _sim_services.BC_INFO_device_get - if _newclass: - device = _swig_property(_sim_services.BC_INFO_device_get, _sim_services.BC_INFO_device_set) - __swig_setmethods__["addr"] = _sim_services.BC_INFO_addr_set - __swig_getmethods__["addr"] = _sim_services.BC_INFO_addr_get - if _newclass: - addr = _swig_property(_sim_services.BC_INFO_addr_get, _sim_services.BC_INFO_addr_set) - __swig_setmethods__["fd"] = _sim_services.BC_INFO_fd_set - __swig_getmethods__["fd"] = _sim_services.BC_INFO_fd_get - if _newclass: - fd = _swig_property(_sim_services.BC_INFO_fd_get, _sim_services.BC_INFO_fd_set) - - def __init__(self): - this = _sim_services.new_BC_INFO() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_BC_INFO - __del__ = lambda self: None -BC_INFO_swigregister = _sim_services.BC_INFO_swigregister -BC_INFO_swigregister(BC_INFO) - -class JSONVariableServer(ThreadBase): - __swig_setmethods__ = {} - for _s in [ThreadBase]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, JSONVariableServer, name, value) - __swig_getmethods__ = {} - for _s in [ThreadBase]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, JSONVariableServer, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_JSONVariableServer(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_JSONVariableServer - __del__ = lambda self: None - __swig_setmethods__["enabled"] = _sim_services.JSONVariableServer_enabled_set - __swig_getmethods__["enabled"] = _sim_services.JSONVariableServer_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.JSONVariableServer_enabled_get, _sim_services.JSONVariableServer_enabled_set) - - def get_hostname(self, *args): - return _sim_services.JSONVariableServer_get_hostname(self, *args) - - def get_port(self, *args): - return _sim_services.JSONVariableServer_get_port(self, *args) - - def set_port(self, *args): - return _sim_services.JSONVariableServer_set_port(self, *args) - - def set_source_address(self, *args): - return _sim_services.JSONVariableServer_set_source_address(self, *args) - - def get_source_address(self, *args): - return _sim_services.JSONVariableServer_get_source_address(self, *args) - - def init_listen_device(self, *args): - return _sim_services.JSONVariableServer_init_listen_device(self, *args) - - def init(self, *args): - return _sim_services.JSONVariableServer_init(self, *args) - - def check_and_move_listen_device(self, *args): - return _sim_services.JSONVariableServer_check_and_move_listen_device(self, *args) - - def thread_body(self, *args): - return _sim_services.JSONVariableServer_thread_body(self, *args) - - def restart(self, *args): - return _sim_services.JSONVariableServer_restart(self, *args) - - def dump(self, *args): - return _sim_services.JSONVariableServer_dump(self, *args) -JSONVariableServer_swigregister = _sim_services.JSONVariableServer_swigregister -JSONVariableServer_swigregister(JSONVariableServer) - -class IntegrationManager(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegrationManager, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, IntegrationManager, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_IntegrationManager(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def is_empty(self, *args): - return _sim_services.IntegrationManager_is_empty(self, *args) - - def build_sim_object_info(self, *args): - return _sim_services.IntegrationManager_build_sim_object_info(self, *args) - - def clear_sim_object_info(self, *args): - return _sim_services.IntegrationManager_clear_sim_object_info(self, *args) - - def clear_integrated_by(self, *args): - return _sim_services.IntegrationManager_clear_integrated_by(self, *args) - - def get_integrated_by(self, *args): - return _sim_services.IntegrationManager_get_integrated_by(self, *args) - - def set_integrated_by(self, *args): - return _sim_services.IntegrationManager_set_integrated_by(self, *args) - - def add_jobs_to_queue(self, *args): - return _sim_services.IntegrationManager_add_jobs_to_queue(self, *args) - - def find_sim_object(self, *args): - return _sim_services.IntegrationManager_find_sim_object(self, *args) - __swig_destroy__ = _sim_services.delete_IntegrationManager - __del__ = lambda self: None -IntegrationManager_swigregister = _sim_services.IntegrationManager_swigregister -IntegrationManager_swigregister(IntegrationManager) - -Euler = _sim_services.Euler -Euler_Cromer = _sim_services.Euler_Cromer -Nystrom_Lear_2 = _sim_services.Nystrom_Lear_2 -Runge_Kutta_2 = _sim_services.Runge_Kutta_2 -Modified_Midpoint_4 = _sim_services.Modified_Midpoint_4 -Runge_Kutta_4 = _sim_services.Runge_Kutta_4 -Runge_Kutta_Gill_4 = _sim_services.Runge_Kutta_Gill_4 -Runge_Kutta_Fehlberg_45 = _sim_services.Runge_Kutta_Fehlberg_45 -Runge_Kutta_Fehlberg_78 = _sim_services.Runge_Kutta_Fehlberg_78 -ABM_Method = _sim_services.ABM_Method -User_Defined = _sim_services.User_Defined -class Integrator(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Integrator, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_Integrator - __del__ = lambda self: None - - def initialize(self, *args): - return _sim_services.Integrator_initialize(self, *args) - - def integrate(self, *args): - return _sim_services.Integrator_integrate(self, *args) - - def integrate_1st_order_ode(self, *args): - return _sim_services.Integrator_integrate_1st_order_ode(self, *args) - - def integrate_2nd_order_ode(self, *args): - return _sim_services.Integrator_integrate_2nd_order_ode(self, *args) - - def state_in(self, *args): - return _sim_services.Integrator_state_in(self, *args) - - def deriv_in(self, *args): - return _sim_services.Integrator_deriv_in(self, *args) - - def state_out(self, *args): - return _sim_services.Integrator_state_out(self, *args) - - def deriv2_in(self, *args): - return _sim_services.Integrator_deriv2_in(self, *args) - __swig_setmethods__["num_state"] = _sim_services.Integrator_num_state_set - __swig_getmethods__["num_state"] = _sim_services.Integrator_num_state_get - if _newclass: - num_state = _swig_property(_sim_services.Integrator_num_state_get, _sim_services.Integrator_num_state_set) - __swig_setmethods__["intermediate_step"] = _sim_services.Integrator_intermediate_step_set - __swig_getmethods__["intermediate_step"] = _sim_services.Integrator_intermediate_step_get - if _newclass: - intermediate_step = _swig_property(_sim_services.Integrator_intermediate_step_get, _sim_services.Integrator_intermediate_step_set) - __swig_setmethods__["first_step_deriv"] = _sim_services.Integrator_first_step_deriv_set - __swig_getmethods__["first_step_deriv"] = _sim_services.Integrator_first_step_deriv_get - if _newclass: - first_step_deriv = _swig_property(_sim_services.Integrator_first_step_deriv_get, _sim_services.Integrator_first_step_deriv_set) - __swig_setmethods__["last_step_deriv"] = _sim_services.Integrator_last_step_deriv_set - __swig_getmethods__["last_step_deriv"] = _sim_services.Integrator_last_step_deriv_get - if _newclass: - last_step_deriv = _swig_property(_sim_services.Integrator_last_step_deriv_get, _sim_services.Integrator_last_step_deriv_set) - __swig_setmethods__["is_2nd_order_ODE_technique"] = _sim_services.Integrator_is_2nd_order_ODE_technique_set - __swig_getmethods__["is_2nd_order_ODE_technique"] = _sim_services.Integrator_is_2nd_order_ODE_technique_get - if _newclass: - is_2nd_order_ODE_technique = _swig_property(_sim_services.Integrator_is_2nd_order_ODE_technique_get, _sim_services.Integrator_is_2nd_order_ODE_technique_set) - __swig_setmethods__["use_deriv2"] = _sim_services.Integrator_use_deriv2_set - __swig_getmethods__["use_deriv2"] = _sim_services.Integrator_use_deriv2_get - if _newclass: - use_deriv2 = _swig_property(_sim_services.Integrator_use_deriv2_get, _sim_services.Integrator_use_deriv2_set) - __swig_setmethods__["dt"] = _sim_services.Integrator_dt_set - __swig_getmethods__["dt"] = _sim_services.Integrator_dt_get - if _newclass: - dt = _swig_property(_sim_services.Integrator_dt_get, _sim_services.Integrator_dt_set) - __swig_setmethods__["state"] = _sim_services.Integrator_state_set - __swig_getmethods__["state"] = _sim_services.Integrator_state_get - if _newclass: - state = _swig_property(_sim_services.Integrator_state_get, _sim_services.Integrator_state_set) - __swig_setmethods__["deriv"] = _sim_services.Integrator_deriv_set - __swig_getmethods__["deriv"] = _sim_services.Integrator_deriv_get - if _newclass: - deriv = _swig_property(_sim_services.Integrator_deriv_get, _sim_services.Integrator_deriv_set) - __swig_setmethods__["deriv2"] = _sim_services.Integrator_deriv2_set - __swig_getmethods__["deriv2"] = _sim_services.Integrator_deriv2_get - if _newclass: - deriv2 = _swig_property(_sim_services.Integrator_deriv2_get, _sim_services.Integrator_deriv2_set) - __swig_setmethods__["state_ws"] = _sim_services.Integrator_state_ws_set - __swig_getmethods__["state_ws"] = _sim_services.Integrator_state_ws_get - if _newclass: - state_ws = _swig_property(_sim_services.Integrator_state_ws_get, _sim_services.Integrator_state_ws_set) - __swig_setmethods__["time"] = _sim_services.Integrator_time_set - __swig_getmethods__["time"] = _sim_services.Integrator_time_get - if _newclass: - time = _swig_property(_sim_services.Integrator_time_get, _sim_services.Integrator_time_set) - __swig_setmethods__["time_0"] = _sim_services.Integrator_time_0_set - __swig_getmethods__["time_0"] = _sim_services.Integrator_time_0_get - if _newclass: - time_0 = _swig_property(_sim_services.Integrator_time_0_get, _sim_services.Integrator_time_0_set) - __swig_setmethods__["verbosity"] = _sim_services.Integrator_verbosity_set - __swig_getmethods__["verbosity"] = _sim_services.Integrator_verbosity_get - if _newclass: - verbosity = _swig_property(_sim_services.Integrator_verbosity_get, _sim_services.Integrator_verbosity_set) - - def get_first_step_deriv(self, *args): - return _sim_services.Integrator_get_first_step_deriv(self, *args) - - def set_first_step_deriv(self, *args): - return _sim_services.Integrator_set_first_step_deriv(self, *args) - - def get_last_step_deriv(self, *args): - return _sim_services.Integrator_get_last_step_deriv(self, *args) - - def set_last_step_deriv(self, *args): - return _sim_services.Integrator_set_last_step_deriv(self, *args) - - def set_verbosity(self, *args): - return _sim_services.Integrator_set_verbosity(self, *args) - - def reset(self, *args): - return _sim_services.Integrator_reset(self, *args) - - def get_Integrator_type(self, *args): - return _sim_services.Integrator_get_Integrator_type(self, *args) -Integrator_swigregister = _sim_services.Integrator_swigregister -Integrator_swigregister(Integrator) - - -def getIntegrator(*args): - return _sim_services.getIntegrator(*args) -getIntegrator = _sim_services.getIntegrator -class IntegLoopScheduler(Scheduler): - __swig_setmethods__ = {} - for _s in [Scheduler]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegLoopScheduler, name, value) - __swig_getmethods__ = {} - for _s in [Scheduler]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, IntegLoopScheduler, name) - __repr__ = _swig_repr - __swig_setmethods__["verbosity"] = _sim_services.IntegLoopScheduler_verbosity_set - __swig_getmethods__["verbosity"] = _sim_services.IntegLoopScheduler_verbosity_get - if _newclass: - verbosity = _swig_property(_sim_services.IntegLoopScheduler_verbosity_get, _sim_services.IntegLoopScheduler_verbosity_set) - __swig_setmethods__["last_step_deriv"] = _sim_services.IntegLoopScheduler_last_step_deriv_set - __swig_getmethods__["last_step_deriv"] = _sim_services.IntegLoopScheduler_last_step_deriv_get - if _newclass: - last_step_deriv = _swig_property(_sim_services.IntegLoopScheduler_last_step_deriv_get, _sim_services.IntegLoopScheduler_last_step_deriv_set) - __swig_setmethods__["first_step_deriv"] = _sim_services.IntegLoopScheduler_first_step_deriv_set - __swig_getmethods__["first_step_deriv"] = _sim_services.IntegLoopScheduler_first_step_deriv_get - if _newclass: - first_step_deriv = _swig_property(_sim_services.IntegLoopScheduler_first_step_deriv_get, _sim_services.IntegLoopScheduler_first_step_deriv_set) - __swig_setmethods__["integ_ptr"] = _sim_services.IntegLoopScheduler_integ_ptr_set - __swig_getmethods__["integ_ptr"] = _sim_services.IntegLoopScheduler_integ_ptr_get - if _newclass: - integ_ptr = _swig_property(_sim_services.IntegLoopScheduler_integ_ptr_get, _sim_services.IntegLoopScheduler_integ_ptr_set) - __swig_setmethods__["sim_objects"] = _sim_services.IntegLoopScheduler_sim_objects_set - __swig_getmethods__["sim_objects"] = _sim_services.IntegLoopScheduler_sim_objects_get - if _newclass: - sim_objects = _swig_property(_sim_services.IntegLoopScheduler_sim_objects_get, _sim_services.IntegLoopScheduler_sim_objects_set) - - def __init__(self, *args): - this = _sim_services.new_IntegLoopScheduler(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_IntegLoopScheduler - __del__ = lambda self: None - - def add_integ_jobs_from_sim_object(self, *args): - return _sim_services.IntegLoopScheduler_add_integ_jobs_from_sim_object(self, *args) - - def call_deriv_jobs(self, *args): - return _sim_services.IntegLoopScheduler_call_deriv_jobs(self, *args) - - def integrate(self, *args): - return _sim_services.IntegLoopScheduler_integrate(self, *args) - - def add_sim_object(self, *args): - return _sim_services.IntegLoopScheduler_add_sim_object(self, *args) - - def remove_sim_object(self, *args): - return _sim_services.IntegLoopScheduler_remove_sim_object(self, *args) - - def rebuild_jobs(self, *args): - return _sim_services.IntegLoopScheduler_rebuild_jobs(self, *args) - - def restart_checkpoint(self, *args): - return _sim_services.IntegLoopScheduler_restart_checkpoint(self, *args) - - def get_first_step_deriv_from_integrator(self, *args): - return _sim_services.IntegLoopScheduler_get_first_step_deriv_from_integrator(self, *args) - - def set_first_step_deriv(self, *args): - return _sim_services.IntegLoopScheduler_set_first_step_deriv(self, *args) - - def get_last_step_deriv(self, *args): - return _sim_services.IntegLoopScheduler_get_last_step_deriv(self, *args) - - def set_last_step_deriv(self, *args): - return _sim_services.IntegLoopScheduler_set_last_step_deriv(self, *args) - - def set_verbosity(self, *args): - return _sim_services.IntegLoopScheduler_set_verbosity(self, *args) - - def getIntegrator(self, *args): - return _sim_services.IntegLoopScheduler_getIntegrator(self, *args) - - def get_integ_cycle(self, *args): - return _sim_services.IntegLoopScheduler_get_integ_cycle(self, *args) - - def set_integ_cycle(self, *args): - return _sim_services.IntegLoopScheduler_set_integ_cycle(self, *args) - - def write_s_job_execution(self, *args): - return _sim_services.IntegLoopScheduler_write_s_job_execution(self, *args) - - def instrument_job_before(self, *args): - return _sim_services.IntegLoopScheduler_instrument_job_before(self, *args) - - def instrument_job_after(self, *args): - return _sim_services.IntegLoopScheduler_instrument_job_after(self, *args) - - def instrument_job_remove(self, *args): - return _sim_services.IntegLoopScheduler_instrument_job_remove(self, *args) -IntegLoopScheduler_swigregister = _sim_services.IntegLoopScheduler_swigregister -IntegLoopScheduler_swigregister(IntegLoopScheduler) - -class IntegLoopSimObject(SimObject): - __swig_setmethods__ = {} - for _s in [SimObject]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegLoopSimObject, name, value) - __swig_getmethods__ = {} - for _s in [SimObject]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, IntegLoopSimObject, name) - __repr__ = _swig_repr - __swig_setmethods__["integ_sched"] = _sim_services.IntegLoopSimObject_integ_sched_set - __swig_getmethods__["integ_sched"] = _sim_services.IntegLoopSimObject_integ_sched_get - if _newclass: - integ_sched = _swig_property(_sim_services.IntegLoopSimObject_integ_sched_get, _sim_services.IntegLoopSimObject_integ_sched_set) - - def __init__(self, *args, **kwargs): - import _sim_services - this = _sim_services.new_IntegLoopSimObject(*args) - try: self.this.append(this) - except: self.this = this - if 'TMMName' in kwargs: - this.own(0) - self.this.own(0) - isThisInMM = _sim_services.get_alloc_info_at(this) - if isThisInMM: - _sim_services.set_alloc_name_at(this, kwargs['TMMName']) - else: - _sim_services.TMM_declare_ext_var(this, _sim_services.TRICK_STRUCTURED, "IntegLoopSimObject", 0, kwargs['TMMName'], 0, None) - alloc_info = _sim_services.get_alloc_info_at(this) - alloc_info.stcl = _sim_services.TRICK_LOCAL - alloc_info.alloc_type = _sim_services.TRICK_ALLOC_NEW - - - - def add_jobs(self, *args): - return _sim_services.IntegLoopSimObject_add_jobs(self, *args) - - def call_function(self, *args): - return _sim_services.IntegLoopSimObject_call_function(self, *args) - - def call_function_double(self, *args): - return _sim_services.IntegLoopSimObject_call_function_double(self, *args) - - def getIntegrator(self, *args): - return _sim_services.IntegLoopSimObject_getIntegrator(self, *args) - - def set_integ_cycle(self, *args): - return _sim_services.IntegLoopSimObject_set_integ_cycle(self, *args) - - def __getitem__(self, *args): - return _sim_services.IntegLoopSimObject___getitem__(self, *args) - - def __len__(self, *args): - return _sim_services.IntegLoopSimObject___len__(self, *args) - __swig_destroy__ = _sim_services.delete_IntegLoopSimObject - __del__ = lambda self: None -IntegLoopSimObject_swigregister = _sim_services.IntegLoopSimObject_swigregister -IntegLoopSimObject_swigregister(IntegLoopSimObject) - - -def castAsIntegLoopSimObject(*args): - return _sim_services.castAsIntegLoopSimObject(*args) -castAsIntegLoopSimObject = _sim_services.castAsIntegLoopSimObject -BIG_TGO = _sim_services.BIG_TGO -Decreasing = _sim_services.Decreasing -Any = _sim_services.Any -Increasing = _sim_services.Increasing -class REGULA_FALSI(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, REGULA_FALSI, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, REGULA_FALSI, name) - __repr__ = _swig_repr - __swig_setmethods__["lower_set"] = _sim_services.REGULA_FALSI_lower_set_set - __swig_getmethods__["lower_set"] = _sim_services.REGULA_FALSI_lower_set_get - if _newclass: - lower_set = _swig_property(_sim_services.REGULA_FALSI_lower_set_get, _sim_services.REGULA_FALSI_lower_set_set) - __swig_setmethods__["upper_set"] = _sim_services.REGULA_FALSI_upper_set_set - __swig_getmethods__["upper_set"] = _sim_services.REGULA_FALSI_upper_set_get - if _newclass: - upper_set = _swig_property(_sim_services.REGULA_FALSI_upper_set_get, _sim_services.REGULA_FALSI_upper_set_set) - __swig_setmethods__["iterations"] = _sim_services.REGULA_FALSI_iterations_set - __swig_getmethods__["iterations"] = _sim_services.REGULA_FALSI_iterations_get - if _newclass: - iterations = _swig_property(_sim_services.REGULA_FALSI_iterations_get, _sim_services.REGULA_FALSI_iterations_set) - __swig_setmethods__["fires"] = _sim_services.REGULA_FALSI_fires_set - __swig_getmethods__["fires"] = _sim_services.REGULA_FALSI_fires_get - if _newclass: - fires = _swig_property(_sim_services.REGULA_FALSI_fires_get, _sim_services.REGULA_FALSI_fires_set) - __swig_setmethods__["x_lower"] = _sim_services.REGULA_FALSI_x_lower_set - __swig_getmethods__["x_lower"] = _sim_services.REGULA_FALSI_x_lower_get - if _newclass: - x_lower = _swig_property(_sim_services.REGULA_FALSI_x_lower_get, _sim_services.REGULA_FALSI_x_lower_set) - __swig_setmethods__["t_lower"] = _sim_services.REGULA_FALSI_t_lower_set - __swig_getmethods__["t_lower"] = _sim_services.REGULA_FALSI_t_lower_get - if _newclass: - t_lower = _swig_property(_sim_services.REGULA_FALSI_t_lower_get, _sim_services.REGULA_FALSI_t_lower_set) - __swig_setmethods__["x_upper"] = _sim_services.REGULA_FALSI_x_upper_set - __swig_getmethods__["x_upper"] = _sim_services.REGULA_FALSI_x_upper_get - if _newclass: - x_upper = _swig_property(_sim_services.REGULA_FALSI_x_upper_get, _sim_services.REGULA_FALSI_x_upper_set) - __swig_setmethods__["t_upper"] = _sim_services.REGULA_FALSI_t_upper_set - __swig_getmethods__["t_upper"] = _sim_services.REGULA_FALSI_t_upper_get - if _newclass: - t_upper = _swig_property(_sim_services.REGULA_FALSI_t_upper_get, _sim_services.REGULA_FALSI_t_upper_set) - __swig_setmethods__["delta_time"] = _sim_services.REGULA_FALSI_delta_time_set - __swig_getmethods__["delta_time"] = _sim_services.REGULA_FALSI_delta_time_get - if _newclass: - delta_time = _swig_property(_sim_services.REGULA_FALSI_delta_time_get, _sim_services.REGULA_FALSI_delta_time_set) - __swig_setmethods__["error"] = _sim_services.REGULA_FALSI_error_set - __swig_getmethods__["error"] = _sim_services.REGULA_FALSI_error_get - if _newclass: - error = _swig_property(_sim_services.REGULA_FALSI_error_get, _sim_services.REGULA_FALSI_error_set) - __swig_setmethods__["last_error"] = _sim_services.REGULA_FALSI_last_error_set - __swig_getmethods__["last_error"] = _sim_services.REGULA_FALSI_last_error_get - if _newclass: - last_error = _swig_property(_sim_services.REGULA_FALSI_last_error_get, _sim_services.REGULA_FALSI_last_error_set) - __swig_setmethods__["last_tgo"] = _sim_services.REGULA_FALSI_last_tgo_set - __swig_getmethods__["last_tgo"] = _sim_services.REGULA_FALSI_last_tgo_get - if _newclass: - last_tgo = _swig_property(_sim_services.REGULA_FALSI_last_tgo_get, _sim_services.REGULA_FALSI_last_tgo_set) - __swig_setmethods__["error_tol"] = _sim_services.REGULA_FALSI_error_tol_set - __swig_getmethods__["error_tol"] = _sim_services.REGULA_FALSI_error_tol_get - if _newclass: - error_tol = _swig_property(_sim_services.REGULA_FALSI_error_tol_get, _sim_services.REGULA_FALSI_error_tol_set) - __swig_setmethods__["mode"] = _sim_services.REGULA_FALSI_mode_set - __swig_getmethods__["mode"] = _sim_services.REGULA_FALSI_mode_get - if _newclass: - mode = _swig_property(_sim_services.REGULA_FALSI_mode_get, _sim_services.REGULA_FALSI_mode_set) - __swig_setmethods__["function_slope"] = _sim_services.REGULA_FALSI_function_slope_set - __swig_getmethods__["function_slope"] = _sim_services.REGULA_FALSI_function_slope_get - if _newclass: - function_slope = _swig_property(_sim_services.REGULA_FALSI_function_slope_get, _sim_services.REGULA_FALSI_function_slope_set) - - def __init__(self): - this = _sim_services.new_REGULA_FALSI() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_REGULA_FALSI - __del__ = lambda self: None -REGULA_FALSI_swigregister = _sim_services.REGULA_FALSI_swigregister -REGULA_FALSI_swigregister(REGULA_FALSI) - - -def regula_falsi(*args): - return _sim_services.regula_falsi(*args) -regula_falsi = _sim_services.regula_falsi - -def reset_regula_falsi(*args): - return _sim_services.reset_regula_falsi(*args) -reset_regula_falsi = _sim_services.reset_regula_falsi - -def regula_falsi_set_upper(*args): - return _sim_services.regula_falsi_set_upper(*args) -regula_falsi_set_upper = _sim_services.regula_falsi_set_upper - -def regula_falsi_set_lower(*args): - return _sim_services.regula_falsi_set_lower(*args) -regula_falsi_set_lower = _sim_services.regula_falsi_set_lower -class Er7UtilsDeletable(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Er7UtilsDeletable, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Er7UtilsDeletable, name) - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_Er7UtilsDeletable - __del__ = lambda self: None - - def __init__(self): - this = _sim_services.new_Er7UtilsDeletable() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this -Er7UtilsDeletable_swigregister = _sim_services.Er7UtilsDeletable_swigregister -Er7UtilsDeletable_swigregister(Er7UtilsDeletable) - -class GeneralizedPositionDerivativeFunctions(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, GeneralizedPositionDerivativeFunctions, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, GeneralizedPositionDerivativeFunctions, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_GeneralizedPositionDerivativeFunctions(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_GeneralizedPositionDerivativeFunctions - __del__ = lambda self: None - __swig_setmethods__["first_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_set - __swig_getmethods__["first_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_get - if _newclass: - first_deriv_fun = _swig_property(_sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_get, _sim_services.GeneralizedPositionDerivativeFunctions_first_deriv_fun_set) - __swig_setmethods__["second_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_set - __swig_getmethods__["second_deriv_fun"] = _sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_get - if _newclass: - second_deriv_fun = _swig_property(_sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_get, _sim_services.GeneralizedPositionDerivativeFunctions_second_deriv_fun_set) -GeneralizedPositionDerivativeFunctions_swigregister = _sim_services.GeneralizedPositionDerivativeFunctions_swigregister -GeneralizedPositionDerivativeFunctions_swigregister(GeneralizedPositionDerivativeFunctions) - -class GeneralizedPositionStepFunctions(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, GeneralizedPositionStepFunctions, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, GeneralizedPositionStepFunctions, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_GeneralizedPositionStepFunctions(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_GeneralizedPositionStepFunctions - __del__ = lambda self: None - __swig_setmethods__["expmap_step_fun"] = _sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_set - __swig_getmethods__["expmap_step_fun"] = _sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_get - if _newclass: - expmap_step_fun = _swig_property(_sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_get, _sim_services.GeneralizedPositionStepFunctions_expmap_step_fun_set) - __swig_setmethods__["dexpinv_xform_fun"] = _sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_set - __swig_getmethods__["dexpinv_xform_fun"] = _sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_get - if _newclass: - dexpinv_xform_fun = _swig_property(_sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_get, _sim_services.GeneralizedPositionStepFunctions_dexpinv_xform_fun_set) -GeneralizedPositionStepFunctions_swigregister = _sim_services.GeneralizedPositionStepFunctions_swigregister -GeneralizedPositionStepFunctions_swigregister(GeneralizedPositionStepFunctions) - -class Integration(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Integration, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Integration, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined") - __repr__ = _swig_repr - Unspecified = _sim_services.Integration_Unspecified - Euler = _sim_services.Integration_Euler - SymplecticEuler = _sim_services.Integration_SymplecticEuler - Beeman = _sim_services.Integration_Beeman - NystromLear2 = _sim_services.Integration_NystromLear2 - PositionVerlet = _sim_services.Integration_PositionVerlet - RK2Heun = _sim_services.Integration_RK2Heun - RK2Midpoint = _sim_services.Integration_RK2Midpoint - VelocityVerlet = _sim_services.Integration_VelocityVerlet - ModifiedMidpoint4 = _sim_services.Integration_ModifiedMidpoint4 - AdamsBashforthMoulton4 = _sim_services.Integration_AdamsBashforthMoulton4 - RungeKutta4 = _sim_services.Integration_RungeKutta4 - RKGill4 = _sim_services.Integration_RKGill4 - RKNystrom4 = _sim_services.Integration_RKNystrom4 - RKFehlberg45 = _sim_services.Integration_RKFehlberg45 - RKFehlberg78 = _sim_services.Integration_RKFehlberg78 - Unsupported = _sim_services.Integration_Unsupported - Invalid = _sim_services.Integration_Invalid - FirstOrderODE = _sim_services.Integration_FirstOrderODE - SimpleSecondOrderODE = _sim_services.Integration_SimpleSecondOrderODE - GeneralizedDerivSecondOrderODE = _sim_services.Integration_GeneralizedDerivSecondOrderODE - GeneralizedStepSecondOrderODE = _sim_services.Integration_GeneralizedStepSecondOrderODE -Integration_swigregister = _sim_services.Integration_swigregister -Integration_swigregister(Integration) - -class IntegratorConstructor(Er7UtilsDeletable): - __swig_setmethods__ = {} - for _s in [Er7UtilsDeletable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [Er7UtilsDeletable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, IntegratorConstructor, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_IntegratorConstructor - __del__ = lambda self: None - - def get_class_name(self, *args): - return _sim_services.IntegratorConstructor_get_class_name(self, *args) - - def provides(self, *args): - return _sim_services.IntegratorConstructor_provides(self, *args) - - def implements(self, *args): - return _sim_services.IntegratorConstructor_implements(self, *args) - - def need_first_step_derivatives(self, *args): - return _sim_services.IntegratorConstructor_need_first_step_derivatives(self, *args) - - def is_fixed_step_integrator(self, *args): - return _sim_services.IntegratorConstructor_is_fixed_step_integrator(self, *args) - - def is_second_order_ode_technique(self, *args): - return _sim_services.IntegratorConstructor_is_second_order_ode_technique(self, *args) - - def get_buffer_size(self, *args): - return _sim_services.IntegratorConstructor_get_buffer_size(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.IntegratorConstructor_get_transition_table_size(self, *args) - - def create_copy(self, *args): - return _sim_services.IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.IntegratorConstructor_create_integration_controls(self, *args) - - def create_integrator_results_merger(self, *args): - return _sim_services.IntegratorConstructor_create_integrator_results_merger(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) -IntegratorConstructor_swigregister = _sim_services.IntegratorConstructor_swigregister -IntegratorConstructor_swigregister(IntegratorConstructor) - -class PrimingIntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, PrimingIntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, PrimingIntegratorConstructor, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_PrimingIntegratorConstructor - __del__ = lambda self: None - - def get_primer_constructor(self, *args): - return _sim_services.PrimingIntegratorConstructor_get_primer_constructor(self, *args) - - def is_fixed_step_integrator(self, *args): - return _sim_services.PrimingIntegratorConstructor_is_fixed_step_integrator(self, *args) - - def get_buffer_size(self, *args): - return _sim_services.PrimingIntegratorConstructor_get_buffer_size(self, *args) - - def get_history_length(self, *args): - return _sim_services.PrimingIntegratorConstructor_get_history_length(self, *args) -PrimingIntegratorConstructor_swigregister = _sim_services.PrimingIntegratorConstructor_swigregister -PrimingIntegratorConstructor_swigregister(PrimingIntegratorConstructor) - -class RK4IntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RK4IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RK4IntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.RK4IntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.RK4IntegratorConstructor_create_constructor - - def get_class_name(self, *args): - return _sim_services.RK4IntegratorConstructor_get_class_name(self, *args) - - def create_copy(self, *args): - return _sim_services.RK4IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.RK4IntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.RK4IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.RK4IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.RK4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.RK4IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.RK4IntegratorConstructor_get_transition_table_size(self, *args) - - def __init__(self): - this = _sim_services.new_RK4IntegratorConstructor() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RK4IntegratorConstructor - __del__ = lambda self: None -RK4IntegratorConstructor_swigregister = _sim_services.RK4IntegratorConstructor_swigregister -RK4IntegratorConstructor_swigregister(RK4IntegratorConstructor) - -def RK4IntegratorConstructor_create_constructor(*args): - return _sim_services.RK4IntegratorConstructor_create_constructor(*args) -RK4IntegratorConstructor_create_constructor = _sim_services.RK4IntegratorConstructor_create_constructor - -class ABM4IntegratorConstructor(PrimingIntegratorConstructor): - __swig_setmethods__ = {} - for _s in [PrimingIntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ABM4IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [PrimingIntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ABM4IntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.ABM4IntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.ABM4IntegratorConstructor_create_constructor - - def __init__(self, *args): - this = _sim_services.new_ABM4IntegratorConstructor(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def get_class_name(self, *args): - return _sim_services.ABM4IntegratorConstructor_get_class_name(self, *args) - - def implements(self, *args): - return _sim_services.ABM4IntegratorConstructor_implements(self, *args) - - def provides(self, *args): - return _sim_services.ABM4IntegratorConstructor_provides(self, *args) - - def create_copy(self, *args): - return _sim_services.ABM4IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.ABM4IntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.ABM4IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.ABM4IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.ABM4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.ABM4IntegratorConstructor_get_transition_table_size(self, *args) - - def get_history_length(self, *args): - return _sim_services.ABM4IntegratorConstructor_get_history_length(self, *args) - __swig_destroy__ = _sim_services.delete_ABM4IntegratorConstructor - __del__ = lambda self: None -ABM4IntegratorConstructor_swigregister = _sim_services.ABM4IntegratorConstructor_swigregister -ABM4IntegratorConstructor_swigregister(ABM4IntegratorConstructor) - -def ABM4IntegratorConstructor_create_constructor(*args): - return _sim_services.ABM4IntegratorConstructor_create_constructor(*args) -ABM4IntegratorConstructor_create_constructor = _sim_services.ABM4IntegratorConstructor_create_constructor - -class StateIntegratorInterface(Er7UtilsDeletable): - __swig_setmethods__ = {} - for _s in [Er7UtilsDeletable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, StateIntegratorInterface, name, value) - __swig_getmethods__ = {} - for _s in [Er7UtilsDeletable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, StateIntegratorInterface, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_StateIntegratorInterface - __del__ = lambda self: None - - def reset_integrator(self, *args): - return _sim_services.StateIntegratorInterface_reset_integrator(self, *args) - - def create_copy(self, *args): - return _sim_services.StateIntegratorInterface_create_copy(self, *args) -StateIntegratorInterface_swigregister = _sim_services.StateIntegratorInterface_swigregister -StateIntegratorInterface_swigregister(StateIntegratorInterface) - -class IntegratorResult(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorResult, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, IntegratorResult, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_IntegratorResult(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def get_time_scale(self, *args): - return _sim_services.IntegratorResult_get_time_scale(self, *args) - - def get_passed(self, *args): - return _sim_services.IntegratorResult_get_passed(self, *args) - - def get_failure_mode(self, *args): - return _sim_services.IntegratorResult_get_failure_mode(self, *args) - - def get_merge_count(self, *args): - return _sim_services.IntegratorResult_get_merge_count(self, *args) - - def set_time_scale(self, *args): - return _sim_services.IntegratorResult_set_time_scale(self, *args) - - def set_passed(self, *args): - return _sim_services.IntegratorResult_set_passed(self, *args) - - def set_failed(self, *args): - return _sim_services.IntegratorResult_set_failed(self, *args) - - def set_failure_mode(self, *args): - return _sim_services.IntegratorResult_set_failure_mode(self, *args) - - def mark_as_integrated(self, *args): - return _sim_services.IntegratorResult_mark_as_integrated(self, *args) - - def mark_as_not_integrated(self, *args): - return _sim_services.IntegratorResult_mark_as_not_integrated(self, *args) - - def increment_merge_count(self, *args): - return _sim_services.IntegratorResult_increment_merge_count(self, *args) - __swig_destroy__ = _sim_services.delete_IntegratorResult - __del__ = lambda self: None -IntegratorResult_swigregister = _sim_services.IntegratorResult_swigregister -IntegratorResult_swigregister(IntegratorResult) - -class FirstOrderODEIntegrator(StateIntegratorInterface): - __swig_setmethods__ = {} - for _s in [StateIntegratorInterface]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, FirstOrderODEIntegrator, name, value) - __swig_getmethods__ = {} - for _s in [StateIntegratorInterface]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, FirstOrderODEIntegrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_FirstOrderODEIntegrator - __del__ = lambda self: None - - def create_copy(self, *args): - return _sim_services.FirstOrderODEIntegrator_create_copy(self, *args) - - def set_controls(self, *args): - return _sim_services.FirstOrderODEIntegrator_set_controls(self, *args) - - def integrate(self, *args): - return _sim_services.FirstOrderODEIntegrator_integrate(self, *args) -FirstOrderODEIntegrator_swigregister = _sim_services.FirstOrderODEIntegrator_swigregister -FirstOrderODEIntegrator_swigregister(FirstOrderODEIntegrator) - -class SecondOrderODEIntegrator(StateIntegratorInterface): - __swig_setmethods__ = {} - for _s in [StateIntegratorInterface]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, SecondOrderODEIntegrator, name, value) - __swig_getmethods__ = {} - for _s in [StateIntegratorInterface]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, SecondOrderODEIntegrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_SecondOrderODEIntegrator - __del__ = lambda self: None - - def create_copy(self, *args): - return _sim_services.SecondOrderODEIntegrator_create_copy(self, *args) - - def set_controls(self, *args): - return _sim_services.SecondOrderODEIntegrator_set_controls(self, *args) - - def set_position_derivative_functions(self, *args): - return _sim_services.SecondOrderODEIntegrator_set_position_derivative_functions(self, *args) - - def set_position_step_functions(self, *args): - return _sim_services.SecondOrderODEIntegrator_set_position_step_functions(self, *args) - - def integrate(self, *args): - return _sim_services.SecondOrderODEIntegrator_integrate(self, *args) -SecondOrderODEIntegrator_swigregister = _sim_services.SecondOrderODEIntegrator_swigregister -SecondOrderODEIntegrator_swigregister(SecondOrderODEIntegrator) - -class IntegratorInterface(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorInterface, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, IntegratorInterface, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_IntegratorInterface - __del__ = lambda self: None - - def get_dt(self, *args): - return _sim_services.IntegratorInterface_get_dt(self, *args) - - def get_first_step_derivs_flag(self, *args): - return _sim_services.IntegratorInterface_get_first_step_derivs_flag(self, *args) - - def set_first_step_derivs_flag(self, *args): - return _sim_services.IntegratorInterface_set_first_step_derivs_flag(self, *args) - - def reset_first_step_derivs_flag(self, *args): - return _sim_services.IntegratorInterface_reset_first_step_derivs_flag(self, *args) - - def restore_first_step_derivs_flag(self, *args): - return _sim_services.IntegratorInterface_restore_first_step_derivs_flag(self, *args) - - def set_step_number(self, *args): - return _sim_services.IntegratorInterface_set_step_number(self, *args) - - def set_time(self, *args): - return _sim_services.IntegratorInterface_set_time(self, *args) -IntegratorInterface_swigregister = _sim_services.IntegratorInterface_swigregister -IntegratorInterface_swigregister(IntegratorInterface) - -class IntegrationControls(Er7UtilsDeletable): - __swig_setmethods__ = {} - for _s in [Er7UtilsDeletable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegrationControls, name, value) - __swig_getmethods__ = {} - for _s in [Er7UtilsDeletable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, IntegrationControls, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_IntegrationControls - __del__ = lambda self: None - - def create_copy(self, *args): - return _sim_services.IntegrationControls_create_copy(self, *args) - - def get_simtime(self, *args): - return _sim_services.IntegrationControls_get_simtime(self, *args) - - def get_final_stage(self, *args): - return _sim_services.IntegrationControls_get_final_stage(self, *args) - - def get_step_number(self, *args): - return _sim_services.IntegrationControls_get_step_number(self, *args) - - def in_initial_cycle(self, *args): - return _sim_services.IntegrationControls_in_initial_cycle(self, *args) - - def get_expected_step_number(self, *args): - return _sim_services.IntegrationControls_get_expected_step_number(self, *args) - - def get_reset_needed(self, *args): - return _sim_services.IntegrationControls_get_reset_needed(self, *args) - - def set_reset_needed(self, *args): - return _sim_services.IntegrationControls_set_reset_needed(self, *args) - - def get_transition_table_element(self, *args): - return _sim_services.IntegrationControls_get_transition_table_element(self, *args) - - def set_transition_table_element(self, *args): - return _sim_services.IntegrationControls_set_transition_table_element(self, *args) - - def integrate(self, *args): - return _sim_services.IntegrationControls_integrate(self, *args) - - def reset_integrator(self, *args): - return _sim_services.IntegrationControls_reset_integrator(self, *args) -IntegrationControls_swigregister = _sim_services.IntegrationControls_swigregister -IntegrationControls_swigregister(IntegrationControls) - -class BaseIntegrationGroup(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, BaseIntegrationGroup, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, BaseIntegrationGroup, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_BaseIntegrationGroup - __del__ = lambda self: None - - def reset_integrators(self, *args): - return _sim_services.BaseIntegrationGroup_reset_integrators(self, *args) - - def get_first_step_derivs_flag(self, *args): - return _sim_services.BaseIntegrationGroup_get_first_step_derivs_flag(self, *args) - - def integrate_group(self, *args): - return _sim_services.BaseIntegrationGroup_integrate_group(self, *args) - - def integrate_group_from(self, *args): - return _sim_services.BaseIntegrationGroup_integrate_group_from(self, *args) - - def integrate_group_to(self, *args): - return _sim_services.BaseIntegrationGroup_integrate_group_to(self, *args) - - def initialize_group(self, *args): - return _sim_services.BaseIntegrationGroup_initialize_group(self, *args) - - def update_integration_interface(self, *args): - return _sim_services.BaseIntegrationGroup_update_integration_interface(self, *args) - - def integrate_bodies(self, *args): - return _sim_services.BaseIntegrationGroup_integrate_bodies(self, *args) - - def reset_body_integrators(self, *args): - return _sim_services.BaseIntegrationGroup_reset_body_integrators(self, *args) -BaseIntegrationGroup_swigregister = _sim_services.BaseIntegrationGroup_swigregister -BaseIntegrationGroup_swigregister(BaseIntegrationGroup) - -class TimeInterface(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TimeInterface, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TimeInterface, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_TimeInterface - __del__ = lambda self: None - - def update_time(self, *args): - return _sim_services.TimeInterface_update_time(self, *args) - - def get_time_scale_factor(self, *args): - return _sim_services.TimeInterface_get_time_scale_factor(self, *args) -TimeInterface_swigregister = _sim_services.TimeInterface_swigregister -TimeInterface_swigregister(TimeInterface) - -class TrickIntegrator(Integrator): - __swig_setmethods__ = {} - for _s in [Integrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, TrickIntegrator, name, value) - __swig_getmethods__ = {} - for _s in [Integrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, TrickIntegrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - InvalidIntegrationMode = _sim_services.TrickIntegrator_InvalidIntegrationMode - UseFirstOrderIntegrator = _sim_services.TrickIntegrator_UseFirstOrderIntegrator - UseSecondOrderIntegrator = _sim_services.TrickIntegrator_UseSecondOrderIntegrator - __swig_destroy__ = _sim_services.delete_TrickIntegrator - __del__ = lambda self: None - - def integrate(self, *args): - return _sim_services.TrickIntegrator_integrate(self, *args) - - def initialize(self, *args): - return _sim_services.TrickIntegrator_initialize(self, *args) - - def integrate_1st_order_ode(self, *args): - return _sim_services.TrickIntegrator_integrate_1st_order_ode(self, *args) - - def integrate_2nd_order_ode(self, *args): - return _sim_services.TrickIntegrator_integrate_2nd_order_ode(self, *args) -TrickIntegrator_swigregister = _sim_services.TrickIntegrator_swigregister -TrickIntegrator_swigregister(TrickIntegrator) - -class TrickFirstOrderOdeIntegrator(TrickIntegrator): - __swig_setmethods__ = {} - for _s in [TrickIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, TrickFirstOrderOdeIntegrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, TrickFirstOrderOdeIntegrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_TrickFirstOrderOdeIntegrator - __del__ = lambda self: None -TrickFirstOrderOdeIntegrator_swigregister = _sim_services.TrickFirstOrderOdeIntegrator_swigregister -TrickFirstOrderOdeIntegrator_swigregister(TrickFirstOrderOdeIntegrator) - -class ABM_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ABM_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ABM_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_ABM_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ABM_IntegratorHelper - __del__ = lambda self: None -ABM_IntegratorHelper_swigregister = _sim_services.ABM_IntegratorHelper_swigregister -ABM_IntegratorHelper_swigregister(ABM_IntegratorHelper) - -class ABM_Integrator(TrickFirstOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ABM_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ABM_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_ABM_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.ABM_Integrator_get_Integrator_type(self, *args) -ABM_Integrator_swigregister = _sim_services.ABM_Integrator_swigregister -ABM_Integrator_swigregister(ABM_Integrator) - -class SymplecticEulerIntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, SymplecticEulerIntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, SymplecticEulerIntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.SymplecticEulerIntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.SymplecticEulerIntegratorConstructor_create_constructor - - def __init__(self, *args): - this = _sim_services.new_SymplecticEulerIntegratorConstructor(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_SymplecticEulerIntegratorConstructor - __del__ = lambda self: None - - def get_class_name(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_get_class_name(self, *args) - - def implements(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_implements(self, *args) - - def create_copy(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) - - def is_second_order_ode_technique(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_is_second_order_ode_technique(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.SymplecticEulerIntegratorConstructor_get_transition_table_size(self, *args) -SymplecticEulerIntegratorConstructor_swigregister = _sim_services.SymplecticEulerIntegratorConstructor_swigregister -SymplecticEulerIntegratorConstructor_swigregister(SymplecticEulerIntegratorConstructor) - -def SymplecticEulerIntegratorConstructor_create_constructor(*args): - return _sim_services.SymplecticEulerIntegratorConstructor_create_constructor(*args) -SymplecticEulerIntegratorConstructor_create_constructor = _sim_services.SymplecticEulerIntegratorConstructor_create_constructor - -class TrickSecondOrderOdeIntegrator(TrickIntegrator): - __swig_setmethods__ = {} - for _s in [TrickIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, TrickSecondOrderOdeIntegrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, TrickSecondOrderOdeIntegrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_TrickSecondOrderOdeIntegrator - __del__ = lambda self: None -TrickSecondOrderOdeIntegrator_swigregister = _sim_services.TrickSecondOrderOdeIntegrator_swigregister -TrickSecondOrderOdeIntegrator_swigregister(TrickSecondOrderOdeIntegrator) - -class Euler_Cromer_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_Cromer_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Euler_Cromer_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_Euler_Cromer_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_Euler_Cromer_IntegratorHelper - __del__ = lambda self: None -Euler_Cromer_IntegratorHelper_swigregister = _sim_services.Euler_Cromer_IntegratorHelper_swigregister -Euler_Cromer_IntegratorHelper_swigregister(Euler_Cromer_IntegratorHelper) - -class Euler_Cromer_Integrator(TrickSecondOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickSecondOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_Cromer_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickSecondOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, Euler_Cromer_Integrator, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_Euler_Cromer_Integrator(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def integrate(self, *args): - return _sim_services.Euler_Cromer_Integrator_integrate(self, *args) - __swig_destroy__ = _sim_services.delete_Euler_Cromer_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.Euler_Cromer_Integrator_get_Integrator_type(self, *args) -Euler_Cromer_Integrator_swigregister = _sim_services.Euler_Cromer_Integrator_swigregister -Euler_Cromer_Integrator_swigregister(Euler_Cromer_Integrator) - -class EulerIntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, EulerIntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, EulerIntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.EulerIntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.EulerIntegratorConstructor_create_constructor - - def __init__(self, *args): - this = _sim_services.new_EulerIntegratorConstructor(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_EulerIntegratorConstructor - __del__ = lambda self: None - - def get_class_name(self, *args): - return _sim_services.EulerIntegratorConstructor_get_class_name(self, *args) - - def create_copy(self, *args): - return _sim_services.EulerIntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.EulerIntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.EulerIntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.EulerIntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.EulerIntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.EulerIntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.EulerIntegratorConstructor_get_transition_table_size(self, *args) -EulerIntegratorConstructor_swigregister = _sim_services.EulerIntegratorConstructor_swigregister -EulerIntegratorConstructor_swigregister(EulerIntegratorConstructor) - -def EulerIntegratorConstructor_create_constructor(*args): - return _sim_services.EulerIntegratorConstructor_create_constructor(*args) -EulerIntegratorConstructor_create_constructor = _sim_services.EulerIntegratorConstructor_create_constructor - -class Euler_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Euler_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_Euler_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_Euler_IntegratorHelper - __del__ = lambda self: None -Euler_IntegratorHelper_swigregister = _sim_services.Euler_IntegratorHelper_swigregister -Euler_IntegratorHelper_swigregister(Euler_IntegratorHelper) - -class Euler_Integrator(TrickFirstOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, Euler_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, Euler_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_Euler_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.Euler_Integrator_get_Integrator_type(self, *args) -Euler_Integrator_swigregister = _sim_services.Euler_Integrator_swigregister -Euler_Integrator_swigregister(Euler_Integrator) - -class MM4IntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MM4IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MM4IntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.MM4IntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.MM4IntegratorConstructor_create_constructor - - def get_class_name(self, *args): - return _sim_services.MM4IntegratorConstructor_get_class_name(self, *args) - - def implements(self, *args): - return _sim_services.MM4IntegratorConstructor_implements(self, *args) - - def provides(self, *args): - return _sim_services.MM4IntegratorConstructor_provides(self, *args) - - def create_copy(self, *args): - return _sim_services.MM4IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.MM4IntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.MM4IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.MM4IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.MM4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def is_second_order_ode_technique(self, *args): - return _sim_services.MM4IntegratorConstructor_is_second_order_ode_technique(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.MM4IntegratorConstructor_get_transition_table_size(self, *args) - - def __init__(self): - this = _sim_services.new_MM4IntegratorConstructor() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MM4IntegratorConstructor - __del__ = lambda self: None -MM4IntegratorConstructor_swigregister = _sim_services.MM4IntegratorConstructor_swigregister -MM4IntegratorConstructor_swigregister(MM4IntegratorConstructor) - -def MM4IntegratorConstructor_create_constructor(*args): - return _sim_services.MM4IntegratorConstructor_create_constructor(*args) -MM4IntegratorConstructor_create_constructor = _sim_services.MM4IntegratorConstructor_create_constructor - -class MM4_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MM4_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MM4_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_MM4_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MM4_IntegratorHelper - __del__ = lambda self: None -MM4_IntegratorHelper_swigregister = _sim_services.MM4_IntegratorHelper_swigregister -MM4_IntegratorHelper_swigregister(MM4_IntegratorHelper) - -class MM4_Integrator(TrickSecondOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickSecondOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MM4_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickSecondOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MM4_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_MM4_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.MM4_Integrator_get_Integrator_type(self, *args) -MM4_Integrator_swigregister = _sim_services.MM4_Integrator_swigregister -MM4_Integrator_swigregister(MM4_Integrator) - -class NystromLear2IntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, NystromLear2IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, NystromLear2IntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.NystromLear2IntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.NystromLear2IntegratorConstructor_create_constructor - - def __init__(self, *args): - this = _sim_services.new_NystromLear2IntegratorConstructor(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_NystromLear2IntegratorConstructor - __del__ = lambda self: None - - def get_class_name(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_get_class_name(self, *args) - - def implements(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_implements(self, *args) - - def provides(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_provides(self, *args) - - def create_copy(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def is_second_order_ode_technique(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_is_second_order_ode_technique(self, *args) - - def need_first_step_derivatives(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_need_first_step_derivatives(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.NystromLear2IntegratorConstructor_get_transition_table_size(self, *args) -NystromLear2IntegratorConstructor_swigregister = _sim_services.NystromLear2IntegratorConstructor_swigregister -NystromLear2IntegratorConstructor_swigregister(NystromLear2IntegratorConstructor) - -def NystromLear2IntegratorConstructor_create_constructor(*args): - return _sim_services.NystromLear2IntegratorConstructor_create_constructor(*args) -NystromLear2IntegratorConstructor_create_constructor = _sim_services.NystromLear2IntegratorConstructor_create_constructor - -class NL2_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, NL2_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, NL2_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_NL2_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_NL2_IntegratorHelper - __del__ = lambda self: None -NL2_IntegratorHelper_swigregister = _sim_services.NL2_IntegratorHelper_swigregister -NL2_IntegratorHelper_swigregister(NL2_IntegratorHelper) - -class NL2_Integrator(TrickSecondOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickSecondOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, NL2_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickSecondOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, NL2_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_NL2_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.NL2_Integrator_get_Integrator_type(self, *args) -NL2_Integrator_swigregister = _sim_services.NL2_Integrator_swigregister -NL2_Integrator_swigregister(NL2_Integrator) - -class RK2HeunIntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RK2HeunIntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RK2HeunIntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.RK2HeunIntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.RK2HeunIntegratorConstructor_create_constructor - - def __init__(self, *args): - this = _sim_services.new_RK2HeunIntegratorConstructor(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RK2HeunIntegratorConstructor - __del__ = lambda self: None - - def get_class_name(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_get_class_name(self, *args) - - def create_copy(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.RK2HeunIntegratorConstructor_get_transition_table_size(self, *args) -RK2HeunIntegratorConstructor_swigregister = _sim_services.RK2HeunIntegratorConstructor_swigregister -RK2HeunIntegratorConstructor_swigregister(RK2HeunIntegratorConstructor) - -def RK2HeunIntegratorConstructor_create_constructor(*args): - return _sim_services.RK2HeunIntegratorConstructor_create_constructor(*args) -RK2HeunIntegratorConstructor_create_constructor = _sim_services.RK2HeunIntegratorConstructor_create_constructor - -class RK2_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RK2_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RK2_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_RK2_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RK2_IntegratorHelper - __del__ = lambda self: None -RK2_IntegratorHelper_swigregister = _sim_services.RK2_IntegratorHelper_swigregister -RK2_IntegratorHelper_swigregister(RK2_IntegratorHelper) - -class RK2_Integrator(TrickFirstOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RK2_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RK2_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_RK2_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.RK2_Integrator_get_Integrator_type(self, *args) -RK2_Integrator_swigregister = _sim_services.RK2_Integrator_swigregister -RK2_Integrator_swigregister(RK2_Integrator) - -class RK4_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RK4_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RK4_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_RK4_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RK4_IntegratorHelper - __del__ = lambda self: None -RK4_IntegratorHelper_swigregister = _sim_services.RK4_IntegratorHelper_swigregister -RK4_IntegratorHelper_swigregister(RK4_IntegratorHelper) - -class RK4_Integrator(TrickFirstOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RK4_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RK4_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_RK4_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.RK4_Integrator_get_Integrator_type(self, *args) -RK4_Integrator_swigregister = _sim_services.RK4_Integrator_swigregister -RK4_Integrator_swigregister(RK4_Integrator) - -class RKFehlberg45IntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RKFehlberg45IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RKFehlberg45IntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.RKFehlberg45IntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.RKFehlberg45IntegratorConstructor_create_constructor - - def get_class_name(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_get_class_name(self, *args) - - def create_copy(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.RKFehlberg45IntegratorConstructor_get_transition_table_size(self, *args) - - def __init__(self): - this = _sim_services.new_RKFehlberg45IntegratorConstructor() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RKFehlberg45IntegratorConstructor - __del__ = lambda self: None -RKFehlberg45IntegratorConstructor_swigregister = _sim_services.RKFehlberg45IntegratorConstructor_swigregister -RKFehlberg45IntegratorConstructor_swigregister(RKFehlberg45IntegratorConstructor) - -def RKFehlberg45IntegratorConstructor_create_constructor(*args): - return _sim_services.RKFehlberg45IntegratorConstructor_create_constructor(*args) -RKFehlberg45IntegratorConstructor_create_constructor = _sim_services.RKFehlberg45IntegratorConstructor_create_constructor - -class RKF45_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RKF45_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RKF45_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_RKF45_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RKF45_IntegratorHelper - __del__ = lambda self: None -RKF45_IntegratorHelper_swigregister = _sim_services.RKF45_IntegratorHelper_swigregister -RKF45_IntegratorHelper_swigregister(RKF45_IntegratorHelper) - -class RKF45_Integrator(TrickFirstOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RKF45_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RKF45_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_RKF45_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.RKF45_Integrator_get_Integrator_type(self, *args) -RKF45_Integrator_swigregister = _sim_services.RKF45_Integrator_swigregister -RKF45_Integrator_swigregister(RKF45_Integrator) - -class RKFehlberg78IntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RKFehlberg78IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RKFehlberg78IntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.RKFehlberg78IntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.RKFehlberg78IntegratorConstructor_create_constructor - - def get_class_name(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_get_class_name(self, *args) - - def create_copy(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.RKFehlberg78IntegratorConstructor_get_transition_table_size(self, *args) - - def __init__(self): - this = _sim_services.new_RKFehlberg78IntegratorConstructor() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RKFehlberg78IntegratorConstructor - __del__ = lambda self: None -RKFehlberg78IntegratorConstructor_swigregister = _sim_services.RKFehlberg78IntegratorConstructor_swigregister -RKFehlberg78IntegratorConstructor_swigregister(RKFehlberg78IntegratorConstructor) - -def RKFehlberg78IntegratorConstructor_create_constructor(*args): - return _sim_services.RKFehlberg78IntegratorConstructor_create_constructor(*args) -RKFehlberg78IntegratorConstructor_create_constructor = _sim_services.RKFehlberg78IntegratorConstructor_create_constructor - -class RKF78_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RKF78_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RKF78_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_RKF78_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RKF78_IntegratorHelper - __del__ = lambda self: None -RKF78_IntegratorHelper_swigregister = _sim_services.RKF78_IntegratorHelper_swigregister -RKF78_IntegratorHelper_swigregister(RKF78_IntegratorHelper) - -class RKF78_Integrator(TrickFirstOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RKF78_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RKF78_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_RKF78_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.RKF78_Integrator_get_Integrator_type(self, *args) -RKF78_Integrator_swigregister = _sim_services.RKF78_Integrator_swigregister -RKF78_Integrator_swigregister(RKF78_Integrator) - -class RKGill4IntegratorConstructor(IntegratorConstructor): - __swig_setmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RKGill4IntegratorConstructor, name, value) - __swig_getmethods__ = {} - for _s in [IntegratorConstructor]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RKGill4IntegratorConstructor, name) - __repr__ = _swig_repr - if _newclass: - create_constructor = staticmethod(_sim_services.RKGill4IntegratorConstructor_create_constructor) - else: - create_constructor = _sim_services.RKGill4IntegratorConstructor_create_constructor - - def get_class_name(self, *args): - return _sim_services.RKGill4IntegratorConstructor_get_class_name(self, *args) - - def implements(self, *args): - return _sim_services.RKGill4IntegratorConstructor_implements(self, *args) - - def create_copy(self, *args): - return _sim_services.RKGill4IntegratorConstructor_create_copy(self, *args) - - def create_integration_controls(self, *args): - return _sim_services.RKGill4IntegratorConstructor_create_integration_controls(self, *args) - - def create_first_order_ode_integrator(self, *args): - return _sim_services.RKGill4IntegratorConstructor_create_first_order_ode_integrator(self, *args) - - def create_second_order_ode_integrator(self, *args): - return _sim_services.RKGill4IntegratorConstructor_create_second_order_ode_integrator(self, *args) - - def create_generalized_deriv_second_order_ode_integrator(self, *args): - return _sim_services.RKGill4IntegratorConstructor_create_generalized_deriv_second_order_ode_integrator(self, *args) - - def create_generalized_step_second_order_ode_integrator(self, *args): - return _sim_services.RKGill4IntegratorConstructor_create_generalized_step_second_order_ode_integrator(self, *args) - - def get_transition_table_size(self, *args): - return _sim_services.RKGill4IntegratorConstructor_get_transition_table_size(self, *args) - - def __init__(self): - this = _sim_services.new_RKGill4IntegratorConstructor() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RKGill4IntegratorConstructor - __del__ = lambda self: None -RKGill4IntegratorConstructor_swigregister = _sim_services.RKGill4IntegratorConstructor_swigregister -RKGill4IntegratorConstructor_swigregister(RKGill4IntegratorConstructor) - -def RKGill4IntegratorConstructor_create_constructor(*args): - return _sim_services.RKGill4IntegratorConstructor_create_constructor(*args) -RKGill4IntegratorConstructor_create_constructor = _sim_services.RKGill4IntegratorConstructor_create_constructor - -class RKG4_IntegratorHelper(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RKG4_IntegratorHelper, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RKG4_IntegratorHelper, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_RKG4_IntegratorHelper() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RKG4_IntegratorHelper - __del__ = lambda self: None -RKG4_IntegratorHelper_swigregister = _sim_services.RKG4_IntegratorHelper_swigregister -RKG4_IntegratorHelper_swigregister(RKG4_IntegratorHelper) - -class RKG4_Integrator(TrickFirstOrderOdeIntegrator): - __swig_setmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, RKG4_Integrator, name, value) - __swig_getmethods__ = {} - for _s in [TrickFirstOrderOdeIntegrator]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, RKG4_Integrator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_RKG4_Integrator - __del__ = lambda self: None - - def get_Integrator_type(self, *args): - return _sim_services.RKG4_Integrator_get_Integrator_type(self, *args) -RKG4_Integrator_swigregister = _sim_services.RKG4_Integrator_swigregister -RKG4_Integrator_swigregister(RKG4_Integrator) - -class TIME_OFFSET(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TIME_OFFSET, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TIME_OFFSET, name) - __repr__ = _swig_repr - __swig_setmethods__["day"] = _sim_services.TIME_OFFSET_day_set - __swig_getmethods__["day"] = _sim_services.TIME_OFFSET_day_get - if _newclass: - day = _swig_property(_sim_services.TIME_OFFSET_day_get, _sim_services.TIME_OFFSET_day_set) - __swig_setmethods__["hour"] = _sim_services.TIME_OFFSET_hour_set - __swig_getmethods__["hour"] = _sim_services.TIME_OFFSET_hour_get - if _newclass: - hour = _swig_property(_sim_services.TIME_OFFSET_hour_get, _sim_services.TIME_OFFSET_hour_set) - __swig_setmethods__["min"] = _sim_services.TIME_OFFSET_min_set - __swig_getmethods__["min"] = _sim_services.TIME_OFFSET_min_get - if _newclass: - min = _swig_property(_sim_services.TIME_OFFSET_min_get, _sim_services.TIME_OFFSET_min_set) - __swig_setmethods__["sec"] = _sim_services.TIME_OFFSET_sec_set - __swig_getmethods__["sec"] = _sim_services.TIME_OFFSET_sec_get - if _newclass: - sec = _swig_property(_sim_services.TIME_OFFSET_sec_get, _sim_services.TIME_OFFSET_sec_set) - - def __init__(self): - this = _sim_services.new_TIME_OFFSET() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TIME_OFFSET - __del__ = lambda self: None -TIME_OFFSET_swigregister = _sim_services.TIME_OFFSET_swigregister -TIME_OFFSET_swigregister(TIME_OFFSET) - -class SimTime(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SimTime, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SimTime, name) - __repr__ = _swig_repr - __swig_setmethods__["ret_time"] = _sim_services.SimTime_ret_time_set - __swig_getmethods__["ret_time"] = _sim_services.SimTime_ret_time_get - if _newclass: - ret_time = _swig_property(_sim_services.SimTime_ret_time_get, _sim_services.SimTime_ret_time_set) - __swig_setmethods__["gmt_ref"] = _sim_services.SimTime_gmt_ref_set - __swig_getmethods__["gmt_ref"] = _sim_services.SimTime_gmt_ref_get - if _newclass: - gmt_ref = _swig_property(_sim_services.SimTime_gmt_ref_get, _sim_services.SimTime_gmt_ref_set) - __swig_setmethods__["gmt_sec_ref"] = _sim_services.SimTime_gmt_sec_ref_set - __swig_getmethods__["gmt_sec_ref"] = _sim_services.SimTime_gmt_sec_ref_get - if _newclass: - gmt_sec_ref = _swig_property(_sim_services.SimTime_gmt_sec_ref_get, _sim_services.SimTime_gmt_sec_ref_set) - __swig_setmethods__["gmt_time"] = _sim_services.SimTime_gmt_time_set - __swig_getmethods__["gmt_time"] = _sim_services.SimTime_gmt_time_get - if _newclass: - gmt_time = _swig_property(_sim_services.SimTime_gmt_time_get, _sim_services.SimTime_gmt_time_set) - __swig_setmethods__["met_ref"] = _sim_services.SimTime_met_ref_set - __swig_getmethods__["met_ref"] = _sim_services.SimTime_met_ref_get - if _newclass: - met_ref = _swig_property(_sim_services.SimTime_met_ref_get, _sim_services.SimTime_met_ref_set) - __swig_setmethods__["met_sec_ref"] = _sim_services.SimTime_met_sec_ref_set - __swig_getmethods__["met_sec_ref"] = _sim_services.SimTime_met_sec_ref_get - if _newclass: - met_sec_ref = _swig_property(_sim_services.SimTime_met_sec_ref_get, _sim_services.SimTime_met_sec_ref_set) - __swig_setmethods__["met_time"] = _sim_services.SimTime_met_time_set - __swig_getmethods__["met_time"] = _sim_services.SimTime_met_time_get - if _newclass: - met_time = _swig_property(_sim_services.SimTime_met_time_get, _sim_services.SimTime_met_time_set) - - def __init__(self, *args): - this = _sim_services.new_SimTime(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def init_times(self, *args): - return _sim_services.SimTime_init_times(self, *args) - - def get_rettime(self, *args): - return _sim_services.SimTime_get_rettime(self, *args) - - def get_gmttime(self, *args): - return _sim_services.SimTime_get_gmttime(self, *args) - - def get_mettime(self, *args): - return _sim_services.SimTime_get_mettime(self, *args) - - def get_rettime_struct(self, *args): - return _sim_services.SimTime_get_rettime_struct(self, *args) - - def get_gmttime_struct(self, *args): - return _sim_services.SimTime_get_gmttime_struct(self, *args) - - def get_mettime_struct(self, *args): - return _sim_services.SimTime_get_mettime_struct(self, *args) - __swig_destroy__ = _sim_services.delete_SimTime - __del__ = lambda self: None -SimTime_swigregister = _sim_services.SimTime_swigregister -SimTime_swigregister(SimTime) - - -def get_rettime(*args): - return _sim_services.get_rettime(*args) -get_rettime = _sim_services.get_rettime - -def get_gmttime(*args): - return _sim_services.get_gmttime(*args) -get_gmttime = _sim_services.get_gmttime - -def get_mettime(*args): - return _sim_services.get_mettime(*args) -get_mettime = _sim_services.get_mettime - -def get_rettime_struct(*args): - return _sim_services.get_rettime_struct(*args) -get_rettime_struct = _sim_services.get_rettime_struct - -def get_gmttime_struct(*args): - return _sim_services.get_gmttime_struct(*args) -get_gmttime_struct = _sim_services.get_gmttime_struct - -def get_mettime_struct(*args): - return _sim_services.get_mettime_struct(*args) -get_mettime_struct = _sim_services.get_mettime_struct -MS_ERROR_TIME = _sim_services.MS_ERROR_TIME -MS_ERROR_PORT = _sim_services.MS_ERROR_PORT -MS_ERROR_NAME = _sim_services.MS_ERROR_NAME -MS_NoCmd = _sim_services.MS_NoCmd -MS_FreezeCmd = _sim_services.MS_FreezeCmd -MS_RunCmd = _sim_services.MS_RunCmd -MS_ExitCmd = _sim_services.MS_ExitCmd -MS_ErrorCmd = _sim_services.MS_ErrorCmd -MS_ReconnectCmd = _sim_services.MS_ReconnectCmd -MS_ChkpntDumpAsciiCmd = _sim_services.MS_ChkpntDumpAsciiCmd -MS_ChkpntLoadAsciiCmd = _sim_services.MS_ChkpntLoadAsciiCmd -class MSConnect(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MSConnect, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MSConnect, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_MSConnect - __del__ = lambda self: None - - def set_sync_wait_limit(self, *args): - return _sim_services.MSConnect_set_sync_wait_limit(self, *args) - - def add_sim_args(self, *args): - return _sim_services.MSConnect_add_sim_args(self, *args) - - def process_sim_args(self, *args): - return _sim_services.MSConnect_process_sim_args(self, *args) - - def accept(self, *args): - return _sim_services.MSConnect_accept(self, *args) - - def connect(self, *args): - return _sim_services.MSConnect_connect(self, *args) - - def disconnect(self, *args): - return _sim_services.MSConnect_disconnect(self, *args) - - def read_time(self, *args): - return _sim_services.MSConnect_read_time(self, *args) - - def read_port(self, *args): - return _sim_services.MSConnect_read_port(self, *args) - - def read_name(self, *args): - return _sim_services.MSConnect_read_name(self, *args) - - def read_command(self, *args): - return _sim_services.MSConnect_read_command(self, *args) - - def write_time(self, *args): - return _sim_services.MSConnect_write_time(self, *args) - - def write_port(self, *args): - return _sim_services.MSConnect_write_port(self, *args) - - def write_name(self, *args): - return _sim_services.MSConnect_write_name(self, *args) - - def write_command(self, *args): - return _sim_services.MSConnect_write_command(self, *args) - __swig_setmethods__["sync_wait_limit"] = _sim_services.MSConnect_sync_wait_limit_set - __swig_getmethods__["sync_wait_limit"] = _sim_services.MSConnect_sync_wait_limit_get - if _newclass: - sync_wait_limit = _swig_property(_sim_services.MSConnect_sync_wait_limit_get, _sim_services.MSConnect_sync_wait_limit_set) -MSConnect_swigregister = _sim_services.MSConnect_swigregister -MSConnect_swigregister(MSConnect) - -class MSSocket(MSConnect): - __swig_setmethods__ = {} - for _s in [MSConnect]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MSSocket, name, value) - __swig_getmethods__ = {} - for _s in [MSConnect]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MSSocket, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MSSocket(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MSSocket - __del__ = lambda self: None - - def set_sync_wait_limit(self, *args): - return _sim_services.MSSocket_set_sync_wait_limit(self, *args) - - def add_sim_args(self, *args): - return _sim_services.MSSocket_add_sim_args(self, *args) - - def process_sim_args(self, *args): - return _sim_services.MSSocket_process_sim_args(self, *args) - - def accept(self, *args): - return _sim_services.MSSocket_accept(self, *args) - - def connect(self, *args): - return _sim_services.MSSocket_connect(self, *args) - - def disconnect(self, *args): - return _sim_services.MSSocket_disconnect(self, *args) - - def read_time(self, *args): - return _sim_services.MSSocket_read_time(self, *args) - - def read_command(self, *args): - return _sim_services.MSSocket_read_command(self, *args) - - def read_port(self, *args): - return _sim_services.MSSocket_read_port(self, *args) - - def read_name(self, *args): - return _sim_services.MSSocket_read_name(self, *args) - - def write_time(self, *args): - return _sim_services.MSSocket_write_time(self, *args) - - def write_command(self, *args): - return _sim_services.MSSocket_write_command(self, *args) - - def write_port(self, *args): - return _sim_services.MSSocket_write_port(self, *args) - - def write_name(self, *args): - return _sim_services.MSSocket_write_name(self, *args) - __swig_setmethods__["tc_dev"] = _sim_services.MSSocket_tc_dev_set - __swig_getmethods__["tc_dev"] = _sim_services.MSSocket_tc_dev_get - if _newclass: - tc_dev = _swig_property(_sim_services.MSSocket_tc_dev_get, _sim_services.MSSocket_tc_dev_set) - __swig_setmethods__["sync_port_tag"] = _sim_services.MSSocket_sync_port_tag_set - __swig_getmethods__["sync_port_tag"] = _sim_services.MSSocket_sync_port_tag_get - if _newclass: - sync_port_tag = _swig_property(_sim_services.MSSocket_sync_port_tag_get, _sim_services.MSSocket_sync_port_tag_set) -MSSocket_swigregister = _sim_services.MSSocket_swigregister -MSSocket_swigregister(MSSocket) - -TSM_SUCCESS = _sim_services.TSM_SUCCESS -TSM_FAIL = _sim_services.TSM_FAIL -TSM_MAX_TIMEOUT_LIMIT = _sim_services.TSM_MAX_TIMEOUT_LIMIT -class TSMDevice(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TSMDevice, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TSMDevice, name) - __repr__ = _swig_repr - __swig_setmethods__["size"] = _sim_services.TSMDevice_size_set - __swig_getmethods__["size"] = _sim_services.TSMDevice_size_get - if _newclass: - size = _swig_property(_sim_services.TSMDevice_size_get, _sim_services.TSMDevice_size_set) - __swig_setmethods__["addr"] = _sim_services.TSMDevice_addr_set - __swig_getmethods__["addr"] = _sim_services.TSMDevice_addr_get - if _newclass: - addr = _swig_property(_sim_services.TSMDevice_addr_get, _sim_services.TSMDevice_addr_set) - __swig_setmethods__["key_file"] = _sim_services.TSMDevice_key_file_set - __swig_getmethods__["key_file"] = _sim_services.TSMDevice_key_file_get - if _newclass: - key_file = _swig_property(_sim_services.TSMDevice_key_file_get, _sim_services.TSMDevice_key_file_set) - __swig_setmethods__["key_id"] = _sim_services.TSMDevice_key_id_set - __swig_getmethods__["key_id"] = _sim_services.TSMDevice_key_id_get - if _newclass: - key_id = _swig_property(_sim_services.TSMDevice_key_id_get, _sim_services.TSMDevice_key_id_set) - __swig_setmethods__["key"] = _sim_services.TSMDevice_key_set - __swig_getmethods__["key"] = _sim_services.TSMDevice_key_get - if _newclass: - key = _swig_property(_sim_services.TSMDevice_key_get, _sim_services.TSMDevice_key_set) - __swig_setmethods__["shmid"] = _sim_services.TSMDevice_shmid_set - __swig_getmethods__["shmid"] = _sim_services.TSMDevice_shmid_get - if _newclass: - shmid = _swig_property(_sim_services.TSMDevice_shmid_get, _sim_services.TSMDevice_shmid_set) - __swig_setmethods__["timeout_limit"] = _sim_services.TSMDevice_timeout_limit_set - __swig_getmethods__["timeout_limit"] = _sim_services.TSMDevice_timeout_limit_get - if _newclass: - timeout_limit = _swig_property(_sim_services.TSMDevice_timeout_limit_get, _sim_services.TSMDevice_timeout_limit_set) - __swig_setmethods__["default_val"] = _sim_services.TSMDevice_default_val_set - __swig_getmethods__["default_val"] = _sim_services.TSMDevice_default_val_get - if _newclass: - default_val = _swig_property(_sim_services.TSMDevice_default_val_get, _sim_services.TSMDevice_default_val_set) - __swig_setmethods__["use_lock"] = _sim_services.TSMDevice_use_lock_set - __swig_getmethods__["use_lock"] = _sim_services.TSMDevice_use_lock_get - if _newclass: - use_lock = _swig_property(_sim_services.TSMDevice_use_lock_get, _sim_services.TSMDevice_use_lock_set) - __swig_setmethods__["rwlattr"] = _sim_services.TSMDevice_rwlattr_set - __swig_getmethods__["rwlattr"] = _sim_services.TSMDevice_rwlattr_get - if _newclass: - rwlattr = _swig_property(_sim_services.TSMDevice_rwlattr_get, _sim_services.TSMDevice_rwlattr_set) - __swig_setmethods__["rwlock_addr"] = _sim_services.TSMDevice_rwlock_addr_set - __swig_getmethods__["rwlock_addr"] = _sim_services.TSMDevice_rwlock_addr_get - if _newclass: - rwlock_addr = _swig_property(_sim_services.TSMDevice_rwlock_addr_get, _sim_services.TSMDevice_rwlock_addr_set) - - def __init__(self): - this = _sim_services.new_TSMDevice() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TSMDevice - __del__ = lambda self: None -TSMDevice_swigregister = _sim_services.TSMDevice_swigregister -TSMDevice_swigregister(TSMDevice) - -MSQ_MAXSIZE = _sim_services.MSQ_MAXSIZE -class MSSharedMemData(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MSSharedMemData, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MSSharedMemData, name) - __repr__ = _swig_repr - __swig_setmethods__["master_pid"] = _sim_services.MSSharedMemData_master_pid_set - __swig_getmethods__["master_pid"] = _sim_services.MSSharedMemData_master_pid_get - if _newclass: - master_pid = _swig_property(_sim_services.MSSharedMemData_master_pid_get, _sim_services.MSSharedMemData_master_pid_set) - __swig_setmethods__["master_time"] = _sim_services.MSSharedMemData_master_time_set - __swig_getmethods__["master_time"] = _sim_services.MSSharedMemData_master_time_get - if _newclass: - master_time = _swig_property(_sim_services.MSSharedMemData_master_time_get, _sim_services.MSSharedMemData_master_time_set) - __swig_setmethods__["master_time_front"] = _sim_services.MSSharedMemData_master_time_front_set - __swig_getmethods__["master_time_front"] = _sim_services.MSSharedMemData_master_time_front_get - if _newclass: - master_time_front = _swig_property(_sim_services.MSSharedMemData_master_time_front_get, _sim_services.MSSharedMemData_master_time_front_set) - __swig_setmethods__["master_time_back"] = _sim_services.MSSharedMemData_master_time_back_set - __swig_getmethods__["master_time_back"] = _sim_services.MSSharedMemData_master_time_back_get - if _newclass: - master_time_back = _swig_property(_sim_services.MSSharedMemData_master_time_back_get, _sim_services.MSSharedMemData_master_time_back_set) - __swig_setmethods__["master_command"] = _sim_services.MSSharedMemData_master_command_set - __swig_getmethods__["master_command"] = _sim_services.MSSharedMemData_master_command_get - if _newclass: - master_command = _swig_property(_sim_services.MSSharedMemData_master_command_get, _sim_services.MSSharedMemData_master_command_set) - __swig_setmethods__["master_command_front"] = _sim_services.MSSharedMemData_master_command_front_set - __swig_getmethods__["master_command_front"] = _sim_services.MSSharedMemData_master_command_front_get - if _newclass: - master_command_front = _swig_property(_sim_services.MSSharedMemData_master_command_front_get, _sim_services.MSSharedMemData_master_command_front_set) - __swig_setmethods__["master_command_back"] = _sim_services.MSSharedMemData_master_command_back_set - __swig_getmethods__["master_command_back"] = _sim_services.MSSharedMemData_master_command_back_get - if _newclass: - master_command_back = _swig_property(_sim_services.MSSharedMemData_master_command_back_get, _sim_services.MSSharedMemData_master_command_back_set) - __swig_setmethods__["slave_command"] = _sim_services.MSSharedMemData_slave_command_set - __swig_getmethods__["slave_command"] = _sim_services.MSSharedMemData_slave_command_get - if _newclass: - slave_command = _swig_property(_sim_services.MSSharedMemData_slave_command_get, _sim_services.MSSharedMemData_slave_command_set) - __swig_setmethods__["slave_command_front"] = _sim_services.MSSharedMemData_slave_command_front_set - __swig_getmethods__["slave_command_front"] = _sim_services.MSSharedMemData_slave_command_front_get - if _newclass: - slave_command_front = _swig_property(_sim_services.MSSharedMemData_slave_command_front_get, _sim_services.MSSharedMemData_slave_command_front_set) - __swig_setmethods__["slave_command_back"] = _sim_services.MSSharedMemData_slave_command_back_set - __swig_getmethods__["slave_command_back"] = _sim_services.MSSharedMemData_slave_command_back_get - if _newclass: - slave_command_back = _swig_property(_sim_services.MSSharedMemData_slave_command_back_get, _sim_services.MSSharedMemData_slave_command_back_set) - __swig_setmethods__["slave_port"] = _sim_services.MSSharedMemData_slave_port_set - __swig_getmethods__["slave_port"] = _sim_services.MSSharedMemData_slave_port_get - if _newclass: - slave_port = _swig_property(_sim_services.MSSharedMemData_slave_port_get, _sim_services.MSSharedMemData_slave_port_set) - __swig_setmethods__["chkpnt_name"] = _sim_services.MSSharedMemData_chkpnt_name_set - __swig_getmethods__["chkpnt_name"] = _sim_services.MSSharedMemData_chkpnt_name_get - if _newclass: - chkpnt_name = _swig_property(_sim_services.MSSharedMemData_chkpnt_name_get, _sim_services.MSSharedMemData_chkpnt_name_set) - - def __init__(self): - this = _sim_services.new_MSSharedMemData() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MSSharedMemData - __del__ = lambda self: None -MSSharedMemData_swigregister = _sim_services.MSSharedMemData_swigregister -MSSharedMemData_swigregister(MSSharedMemData) - -class MSSharedMem(MSConnect): - __swig_setmethods__ = {} - for _s in [MSConnect]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MSSharedMem, name, value) - __swig_getmethods__ = {} - for _s in [MSConnect]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MSSharedMem, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MSSharedMem(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MSSharedMem - __del__ = lambda self: None - - def set_sync_wait_limit(self, *args): - return _sim_services.MSSharedMem_set_sync_wait_limit(self, *args) - - def add_sim_args(self, *args): - return _sim_services.MSSharedMem_add_sim_args(self, *args) - - def process_sim_args(self, *args): - return _sim_services.MSSharedMem_process_sim_args(self, *args) - - def accept(self, *args): - return _sim_services.MSSharedMem_accept(self, *args) - - def connect(self, *args): - return _sim_services.MSSharedMem_connect(self, *args) - - def disconnect(self, *args): - return _sim_services.MSSharedMem_disconnect(self, *args) - - def read_time(self, *args): - return _sim_services.MSSharedMem_read_time(self, *args) - - def read_command(self, *args): - return _sim_services.MSSharedMem_read_command(self, *args) - - def read_port(self, *args): - return _sim_services.MSSharedMem_read_port(self, *args) - - def read_name(self, *args): - return _sim_services.MSSharedMem_read_name(self, *args) - - def write_time(self, *args): - return _sim_services.MSSharedMem_write_time(self, *args) - - def write_command(self, *args): - return _sim_services.MSSharedMem_write_command(self, *args) - - def write_port(self, *args): - return _sim_services.MSSharedMem_write_port(self, *args) - - def write_name(self, *args): - return _sim_services.MSSharedMem_write_name(self, *args) - - def read_wait(self, *args): - return _sim_services.MSSharedMem_read_wait(self, *args) - __swig_setmethods__["tsm_dev"] = _sim_services.MSSharedMem_tsm_dev_set - __swig_getmethods__["tsm_dev"] = _sim_services.MSSharedMem_tsm_dev_get - if _newclass: - tsm_dev = _swig_property(_sim_services.MSSharedMem_tsm_dev_get, _sim_services.MSSharedMem_tsm_dev_set) - __swig_setmethods__["shm_addr"] = _sim_services.MSSharedMem_shm_addr_set - __swig_getmethods__["shm_addr"] = _sim_services.MSSharedMem_shm_addr_get - if _newclass: - shm_addr = _swig_property(_sim_services.MSSharedMem_shm_addr_get, _sim_services.MSSharedMem_shm_addr_set) -MSSharedMem_swigregister = _sim_services.MSSharedMem_swigregister -MSSharedMem_swigregister(MSSharedMem) - -TRICK_SSH = _sim_services.TRICK_SSH -TRICK_RSH = _sim_services.TRICK_RSH -TRICK_USER_REMOTE_SH = _sim_services.TRICK_USER_REMOTE_SH -class slaveVector(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, slaveVector, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, slaveVector, name) - __repr__ = _swig_repr - - def iterator(self, *args): - return _sim_services.slaveVector_iterator(self, *args) - def __iter__(self): - return self.iterator() - - def __nonzero__(self, *args): - return _sim_services.slaveVector___nonzero__(self, *args) - - def __bool__(self, *args): - return _sim_services.slaveVector___bool__(self, *args) - - def __len__(self, *args): - return _sim_services.slaveVector___len__(self, *args) - - def __getslice__(self, *args): - return _sim_services.slaveVector___getslice__(self, *args) - - def __setslice__(self, *args): - return _sim_services.slaveVector___setslice__(self, *args) - - def __delslice__(self, *args): - return _sim_services.slaveVector___delslice__(self, *args) - - def __delitem__(self, *args): - return _sim_services.slaveVector___delitem__(self, *args) - - def __getitem__(self, *args): - return _sim_services.slaveVector___getitem__(self, *args) - - def __setitem__(self, *args): - return _sim_services.slaveVector___setitem__(self, *args) - - def pop(self, *args): - return _sim_services.slaveVector_pop(self, *args) - - def append(self, *args): - return _sim_services.slaveVector_append(self, *args) - - def empty(self, *args): - return _sim_services.slaveVector_empty(self, *args) - - def size(self, *args): - return _sim_services.slaveVector_size(self, *args) - - def swap(self, *args): - return _sim_services.slaveVector_swap(self, *args) - - def begin(self, *args): - return _sim_services.slaveVector_begin(self, *args) - - def end(self, *args): - return _sim_services.slaveVector_end(self, *args) - - def rbegin(self, *args): - return _sim_services.slaveVector_rbegin(self, *args) - - def rend(self, *args): - return _sim_services.slaveVector_rend(self, *args) - - def clear(self, *args): - return _sim_services.slaveVector_clear(self, *args) - - def get_allocator(self, *args): - return _sim_services.slaveVector_get_allocator(self, *args) - - def pop_back(self, *args): - return _sim_services.slaveVector_pop_back(self, *args) - - def erase(self, *args): - return _sim_services.slaveVector_erase(self, *args) - - def __init__(self, *args): - this = _sim_services.new_slaveVector(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def push_back(self, *args): - return _sim_services.slaveVector_push_back(self, *args) - - def front(self, *args): - return _sim_services.slaveVector_front(self, *args) - - def back(self, *args): - return _sim_services.slaveVector_back(self, *args) - - def assign(self, *args): - return _sim_services.slaveVector_assign(self, *args) - - def resize(self, *args): - return _sim_services.slaveVector_resize(self, *args) - - def insert(self, *args): - return _sim_services.slaveVector_insert(self, *args) - - def reserve(self, *args): - return _sim_services.slaveVector_reserve(self, *args) - - def capacity(self, *args): - return _sim_services.slaveVector_capacity(self, *args) - __swig_destroy__ = _sim_services.delete_slaveVector - __del__ = lambda self: None -slaveVector_swigregister = _sim_services.slaveVector_swigregister -slaveVector_swigregister(slaveVector) - -class SlaveInfo(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SlaveInfo, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SlaveInfo, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_SlaveInfo(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["enabled"] = _sim_services.SlaveInfo_enabled_set - __swig_getmethods__["enabled"] = _sim_services.SlaveInfo_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.SlaveInfo_enabled_get, _sim_services.SlaveInfo_enabled_set) - __swig_setmethods__["activated"] = _sim_services.SlaveInfo_activated_set - __swig_getmethods__["activated"] = _sim_services.SlaveInfo_activated_get - if _newclass: - activated = _swig_property(_sim_services.SlaveInfo_activated_get, _sim_services.SlaveInfo_activated_set) - __swig_setmethods__["slave_type"] = _sim_services.SlaveInfo_slave_type_set - __swig_getmethods__["slave_type"] = _sim_services.SlaveInfo_slave_type_get - if _newclass: - slave_type = _swig_property(_sim_services.SlaveInfo_slave_type_get, _sim_services.SlaveInfo_slave_type_set) - __swig_setmethods__["remote_shell"] = _sim_services.SlaveInfo_remote_shell_set - __swig_getmethods__["remote_shell"] = _sim_services.SlaveInfo_remote_shell_get - if _newclass: - remote_shell = _swig_property(_sim_services.SlaveInfo_remote_shell_get, _sim_services.SlaveInfo_remote_shell_set) - __swig_setmethods__["user_remote_shell"] = _sim_services.SlaveInfo_user_remote_shell_set - __swig_getmethods__["user_remote_shell"] = _sim_services.SlaveInfo_user_remote_shell_get - if _newclass: - user_remote_shell = _swig_property(_sim_services.SlaveInfo_user_remote_shell_get, _sim_services.SlaveInfo_user_remote_shell_set) - __swig_setmethods__["remote_shell_args"] = _sim_services.SlaveInfo_remote_shell_args_set - __swig_getmethods__["remote_shell_args"] = _sim_services.SlaveInfo_remote_shell_args_get - if _newclass: - remote_shell_args = _swig_property(_sim_services.SlaveInfo_remote_shell_args_get, _sim_services.SlaveInfo_remote_shell_args_set) - __swig_setmethods__["machine_name"] = _sim_services.SlaveInfo_machine_name_set - __swig_getmethods__["machine_name"] = _sim_services.SlaveInfo_machine_name_get - if _newclass: - machine_name = _swig_property(_sim_services.SlaveInfo_machine_name_get, _sim_services.SlaveInfo_machine_name_set) - __swig_setmethods__["machine_display"] = _sim_services.SlaveInfo_machine_display_set - __swig_getmethods__["machine_display"] = _sim_services.SlaveInfo_machine_display_get - if _newclass: - machine_display = _swig_property(_sim_services.SlaveInfo_machine_display_get, _sim_services.SlaveInfo_machine_display_set) - __swig_setmethods__["sim_path"] = _sim_services.SlaveInfo_sim_path_set - __swig_getmethods__["sim_path"] = _sim_services.SlaveInfo_sim_path_get - if _newclass: - sim_path = _swig_property(_sim_services.SlaveInfo_sim_path_get, _sim_services.SlaveInfo_sim_path_set) - __swig_setmethods__["S_main_name"] = _sim_services.SlaveInfo_S_main_name_set - __swig_getmethods__["S_main_name"] = _sim_services.SlaveInfo_S_main_name_get - if _newclass: - S_main_name = _swig_property(_sim_services.SlaveInfo_S_main_name_get, _sim_services.SlaveInfo_S_main_name_set) - __swig_setmethods__["chkpnt_dump_auto"] = _sim_services.SlaveInfo_chkpnt_dump_auto_set - __swig_getmethods__["chkpnt_dump_auto"] = _sim_services.SlaveInfo_chkpnt_dump_auto_get - if _newclass: - chkpnt_dump_auto = _swig_property(_sim_services.SlaveInfo_chkpnt_dump_auto_get, _sim_services.SlaveInfo_chkpnt_dump_auto_set) - __swig_setmethods__["chkpnt_load_auto"] = _sim_services.SlaveInfo_chkpnt_load_auto_set - __swig_getmethods__["chkpnt_load_auto"] = _sim_services.SlaveInfo_chkpnt_load_auto_get - if _newclass: - chkpnt_load_auto = _swig_property(_sim_services.SlaveInfo_chkpnt_load_auto_get, _sim_services.SlaveInfo_chkpnt_load_auto_set) - __swig_setmethods__["chkpnt_name"] = _sim_services.SlaveInfo_chkpnt_name_set - __swig_getmethods__["chkpnt_name"] = _sim_services.SlaveInfo_chkpnt_name_get - if _newclass: - chkpnt_name = _swig_property(_sim_services.SlaveInfo_chkpnt_name_get, _sim_services.SlaveInfo_chkpnt_name_set) - __swig_setmethods__["run_input_file"] = _sim_services.SlaveInfo_run_input_file_set - __swig_getmethods__["run_input_file"] = _sim_services.SlaveInfo_run_input_file_get - if _newclass: - run_input_file = _swig_property(_sim_services.SlaveInfo_run_input_file_get, _sim_services.SlaveInfo_run_input_file_set) - __swig_setmethods__["other_args"] = _sim_services.SlaveInfo_other_args_set - __swig_getmethods__["other_args"] = _sim_services.SlaveInfo_other_args_get - if _newclass: - other_args = _swig_property(_sim_services.SlaveInfo_other_args_get, _sim_services.SlaveInfo_other_args_set) - __swig_setmethods__["sync_error_terminate"] = _sim_services.SlaveInfo_sync_error_terminate_set - __swig_getmethods__["sync_error_terminate"] = _sim_services.SlaveInfo_sync_error_terminate_get - if _newclass: - sync_error_terminate = _swig_property(_sim_services.SlaveInfo_sync_error_terminate_get, _sim_services.SlaveInfo_sync_error_terminate_set) - __swig_setmethods__["sync_wait_limit"] = _sim_services.SlaveInfo_sync_wait_limit_set - __swig_getmethods__["sync_wait_limit"] = _sim_services.SlaveInfo_sync_wait_limit_get - if _newclass: - sync_wait_limit = _swig_property(_sim_services.SlaveInfo_sync_wait_limit_get, _sim_services.SlaveInfo_sync_wait_limit_set) - __swig_setmethods__["reconnect_wait_limit"] = _sim_services.SlaveInfo_reconnect_wait_limit_set - __swig_getmethods__["reconnect_wait_limit"] = _sim_services.SlaveInfo_reconnect_wait_limit_get - if _newclass: - reconnect_wait_limit = _swig_property(_sim_services.SlaveInfo_reconnect_wait_limit_get, _sim_services.SlaveInfo_reconnect_wait_limit_set) - __swig_setmethods__["reconnect_count"] = _sim_services.SlaveInfo_reconnect_count_set - __swig_getmethods__["reconnect_count"] = _sim_services.SlaveInfo_reconnect_count_get - if _newclass: - reconnect_count = _swig_property(_sim_services.SlaveInfo_reconnect_count_get, _sim_services.SlaveInfo_reconnect_count_set) - __swig_setmethods__["connection"] = _sim_services.SlaveInfo_connection_set - __swig_getmethods__["connection"] = _sim_services.SlaveInfo_connection_get - if _newclass: - connection = _swig_property(_sim_services.SlaveInfo_connection_get, _sim_services.SlaveInfo_connection_set) - - def set_connection_type(self, *args): - return _sim_services.SlaveInfo_set_connection_type(self, *args) - - def start(self, *args): - return _sim_services.SlaveInfo_start(self, *args) - - def read_slave_status(self, *args): - return _sim_services.SlaveInfo_read_slave_status(self, *args) - - def write_master_status(self, *args): - return _sim_services.SlaveInfo_write_master_status(self, *args) - - def write_master_chkpnt_name(self, *args): - return _sim_services.SlaveInfo_write_master_chkpnt_name(self, *args) - __swig_destroy__ = _sim_services.delete_SlaveInfo - __del__ = lambda self: None -SlaveInfo_swigregister = _sim_services.SlaveInfo_swigregister -SlaveInfo_swigregister(SlaveInfo) - -class Master(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Master, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Master, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_Master(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["enabled"] = _sim_services.Master_enabled_set - __swig_getmethods__["enabled"] = _sim_services.Master_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.Master_enabled_get, _sim_services.Master_enabled_set) - __swig_setmethods__["num_slaves"] = _sim_services.Master_num_slaves_set - __swig_getmethods__["num_slaves"] = _sim_services.Master_num_slaves_get - if _newclass: - num_slaves = _swig_property(_sim_services.Master_num_slaves_get, _sim_services.Master_num_slaves_set) - __swig_setmethods__["slaves"] = _sim_services.Master_slaves_set - __swig_getmethods__["slaves"] = _sim_services.Master_slaves_get - if _newclass: - slaves = _swig_property(_sim_services.Master_slaves_get, _sim_services.Master_slaves_set) - - def enable(self, *args): - return _sim_services.Master_enable(self, *args) - - def disable(self, *args): - return _sim_services.Master_disable(self, *args) - - def add_slave(self, *args): - return _sim_services.Master_add_slave(self, *args) - - def process_sim_args(self, *args): - return _sim_services.Master_process_sim_args(self, *args) - - def init(self, *args): - return _sim_services.Master_init(self, *args) - - def end_of_frame_status_from_slave(self, *args): - return _sim_services.Master_end_of_frame_status_from_slave(self, *args) - - def end_of_frame_status_to_slave(self, *args): - return _sim_services.Master_end_of_frame_status_to_slave(self, *args) - - def freeze_init(self, *args): - return _sim_services.Master_freeze_init(self, *args) - - def freeze(self, *args): - return _sim_services.Master_freeze(self, *args) - - def checkpoint(self, *args): - return _sim_services.Master_checkpoint(self, *args) - - def preload_checkpoint(self, *args): - return _sim_services.Master_preload_checkpoint(self, *args) - - def unfreeze(self, *args): - return _sim_services.Master_unfreeze(self, *args) - - def shutdown(self, *args): - return _sim_services.Master_shutdown(self, *args) - __swig_destroy__ = _sim_services.delete_Master - __del__ = lambda self: None -Master_swigregister = _sim_services.Master_swigregister -Master_swigregister(Master) - -class MonteCarloVariable(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariable, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariable, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - Undefined = _sim_services.MonteCarloVariable_Undefined - Calculated = _sim_services.MonteCarloVariable_Calculated - Constant = _sim_services.MonteCarloVariable_Constant - Execute = _sim_services.MonteCarloVariable_Execute - Prescribed = _sim_services.MonteCarloVariable_Prescribed - Random = _sim_services.MonteCarloVariable_Random - __swig_setmethods__["units"] = _sim_services.MonteCarloVariable_units_set - __swig_getmethods__["units"] = _sim_services.MonteCarloVariable_units_get - if _newclass: - units = _swig_property(_sim_services.MonteCarloVariable_units_get, _sim_services.MonteCarloVariable_units_set) - __swig_setmethods__["include_in_summary"] = _sim_services.MonteCarloVariable_include_in_summary_set - __swig_getmethods__["include_in_summary"] = _sim_services.MonteCarloVariable_include_in_summary_get - if _newclass: - include_in_summary = _swig_property(_sim_services.MonteCarloVariable_include_in_summary_get, _sim_services.MonteCarloVariable_include_in_summary_set) - __swig_destroy__ = _sim_services.delete_MonteCarloVariable - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariable_generate_assignment(self, *args) - - def shutdown(self, *args): - return _sim_services.MonteCarloVariable_shutdown(self, *args) - - def get_command(self, *args): - return _sim_services.MonteCarloVariable_get_command(self, *args) - - def get_variable_name(self, *args): - return _sim_services.MonteCarloVariable_get_variable_name(self, *args) - - def get_assignment(self, *args): - return _sim_services.MonteCarloVariable_get_assignment(self, *args) - - def get_type(self, *args): - return _sim_services.MonteCarloVariable_get_type(self, *args) - - def get_type_str(self, *args): - return _sim_services.MonteCarloVariable_get_type_str(self, *args) - - def get_seed(self, *args): - return _sim_services.MonteCarloVariable_get_seed(self, *args) - - def summarize_variable(self, *args): - return _sim_services.MonteCarloVariable_summarize_variable(self, *args) -MonteCarloVariable_swigregister = _sim_services.MonteCarloVariable_swigregister -MonteCarloVariable_swigregister(MonteCarloVariable) - -class MonteCarloVariableFile(MonteCarloVariable): - __swig_setmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableFile, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableFile, name) - __repr__ = _swig_repr - __swig_setmethods__["max_skip"] = _sim_services.MonteCarloVariableFile_max_skip_set - __swig_getmethods__["max_skip"] = _sim_services.MonteCarloVariableFile_max_skip_get - if _newclass: - max_skip = _swig_property(_sim_services.MonteCarloVariableFile_max_skip_get, _sim_services.MonteCarloVariableFile_max_skip_set) - __swig_setmethods__["is_dependent"] = _sim_services.MonteCarloVariableFile_is_dependent_set - __swig_getmethods__["is_dependent"] = _sim_services.MonteCarloVariableFile_is_dependent_get - if _newclass: - is_dependent = _swig_property(_sim_services.MonteCarloVariableFile_is_dependent_get, _sim_services.MonteCarloVariableFile_is_dependent_set) - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableFile(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableFile - __del__ = lambda self: None - - def initialize_file(self, *args): - return _sim_services.MonteCarloVariableFile_initialize_file(self, *args) - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariableFile_generate_assignment(self, *args) - - def summarize_variable(self, *args): - return _sim_services.MonteCarloVariableFile_summarize_variable(self, *args) - - def register_dependent(self, *args): - return _sim_services.MonteCarloVariableFile_register_dependent(self, *args) - - def shutdown(self, *args): - return _sim_services.MonteCarloVariableFile_shutdown(self, *args) - - def has_dependents(self, *args): - return _sim_services.MonteCarloVariableFile_has_dependents(self, *args) - - def get_column_number(self, *args): - return _sim_services.MonteCarloVariableFile_get_column_number(self, *args) - - def get_first_column_number(self, *args): - return _sim_services.MonteCarloVariableFile_get_first_column_number(self, *args) - - def get_filename(self, *args): - return _sim_services.MonteCarloVariableFile_get_filename(self, *args) - - def get_dependents(self, *args): - return _sim_services.MonteCarloVariableFile_get_dependents(self, *args) -MonteCarloVariableFile_swigregister = _sim_services.MonteCarloVariableFile_swigregister -MonteCarloVariableFile_swigregister(MonteCarloVariableFile) - -class MonteCarloPythonLineExec(MonteCarloVariable): - __swig_setmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloPythonLineExec, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloPythonLineExec, name) - __repr__ = _swig_repr - __swig_setmethods__["instruction_set"] = _sim_services.MonteCarloPythonLineExec_instruction_set_set - __swig_getmethods__["instruction_set"] = _sim_services.MonteCarloPythonLineExec_instruction_set_get - if _newclass: - instruction_set = _swig_property(_sim_services.MonteCarloPythonLineExec_instruction_set_get, _sim_services.MonteCarloPythonLineExec_instruction_set_set) - - def __init__(self, *args): - this = _sim_services.new_MonteCarloPythonLineExec(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloPythonLineExec - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloPythonLineExec_generate_assignment(self, *args) -MonteCarloPythonLineExec_swigregister = _sim_services.MonteCarloPythonLineExec_swigregister -MonteCarloPythonLineExec_swigregister(MonteCarloPythonLineExec) - -class MonteCarloPythonFileExec(MonteCarloVariable): - __swig_setmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloPythonFileExec, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloPythonFileExec, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteCarloPythonFileExec(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloPythonFileExec - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloPythonFileExec_generate_assignment(self, *args) -MonteCarloPythonFileExec_swigregister = _sim_services.MonteCarloPythonFileExec_swigregister -MonteCarloPythonFileExec_swigregister(MonteCarloPythonFileExec) - -class MonteCarloVariableRandom(MonteCarloVariable): - __swig_setmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandom, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandom, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandom - __del__ = lambda self: None - - def get_seed(self, *args): - return _sim_services.MonteCarloVariableRandom_get_seed(self, *args) -MonteCarloVariableRandom_swigregister = _sim_services.MonteCarloVariableRandom_swigregister -MonteCarloVariableRandom_swigregister(MonteCarloVariableRandom) - -class MonteCarloVariableFixed(MonteCarloVariable): - __swig_setmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableFixed, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableFixed, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableFixed(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableFixed - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariableFixed_generate_assignment(self, *args) -MonteCarloVariableFixed_swigregister = _sim_services.MonteCarloVariableFixed_swigregister -MonteCarloVariableFixed_swigregister(MonteCarloVariableFixed) - -MSG_NORMAL = _sim_services.MSG_NORMAL -MSG_INFO = _sim_services.MSG_INFO -MSG_WARNING = _sim_services.MSG_WARNING -MSG_ERROR = _sim_services.MSG_ERROR -MSG_DEBUG = _sim_services.MSG_DEBUG -MSG_PLAYBACK = _sim_services.MSG_PLAYBACK - -def message_publish(*args): - return _sim_services.message_publish(*args) -message_publish = _sim_services.message_publish - -def message_publish_standalone(*args): - return _sim_services.message_publish_standalone(*args) -message_publish_standalone = _sim_services.message_publish_standalone - -def send_hs(*args): - return _sim_services.send_hs(*args) -send_hs = _sim_services.send_hs -class MonteCarloVariableSemiFixed(MonteCarloVariable): - __swig_setmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableSemiFixed, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariable]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableSemiFixed, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableSemiFixed(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableSemiFixed - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariableSemiFixed_generate_assignment(self, *args) -MonteCarloVariableSemiFixed_swigregister = _sim_services.MonteCarloVariableSemiFixed_swigregister -MonteCarloVariableSemiFixed_swigregister(MonteCarloVariableSemiFixed) - -class MonteCarloMaster(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloMaster, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloMaster, name) - __repr__ = _swig_repr - __swig_setmethods__["active"] = _sim_services.MonteCarloMaster_active_set - __swig_getmethods__["active"] = _sim_services.MonteCarloMaster_active_get - if _newclass: - active = _swig_property(_sim_services.MonteCarloMaster_active_get, _sim_services.MonteCarloMaster_active_set) - __swig_setmethods__["generate_dispersions"] = _sim_services.MonteCarloMaster_generate_dispersions_set - __swig_getmethods__["generate_dispersions"] = _sim_services.MonteCarloMaster_generate_dispersions_get - if _newclass: - generate_dispersions = _swig_property(_sim_services.MonteCarloMaster_generate_dispersions_get, _sim_services.MonteCarloMaster_generate_dispersions_set) - __swig_setmethods__["run_name"] = _sim_services.MonteCarloMaster_run_name_set - __swig_getmethods__["run_name"] = _sim_services.MonteCarloMaster_run_name_get - if _newclass: - run_name = _swig_property(_sim_services.MonteCarloMaster_run_name_get, _sim_services.MonteCarloMaster_run_name_set) - __swig_setmethods__["monte_dir"] = _sim_services.MonteCarloMaster_monte_dir_set - __swig_getmethods__["monte_dir"] = _sim_services.MonteCarloMaster_monte_dir_get - if _newclass: - monte_dir = _swig_property(_sim_services.MonteCarloMaster_monte_dir_get, _sim_services.MonteCarloMaster_monte_dir_set) - __swig_setmethods__["input_file_name"] = _sim_services.MonteCarloMaster_input_file_name_set - __swig_getmethods__["input_file_name"] = _sim_services.MonteCarloMaster_input_file_name_get - if _newclass: - input_file_name = _swig_property(_sim_services.MonteCarloMaster_input_file_name_get, _sim_services.MonteCarloMaster_input_file_name_set) - __swig_setmethods__["generate_meta_data"] = _sim_services.MonteCarloMaster_generate_meta_data_set - __swig_getmethods__["generate_meta_data"] = _sim_services.MonteCarloMaster_generate_meta_data_get - if _newclass: - generate_meta_data = _swig_property(_sim_services.MonteCarloMaster_generate_meta_data_get, _sim_services.MonteCarloMaster_generate_meta_data_set) - __swig_setmethods__["generate_summary"] = _sim_services.MonteCarloMaster_generate_summary_set - __swig_getmethods__["generate_summary"] = _sim_services.MonteCarloMaster_generate_summary_get - if _newclass: - generate_summary = _swig_property(_sim_services.MonteCarloMaster_generate_summary_get, _sim_services.MonteCarloMaster_generate_summary_set) - __swig_setmethods__["minimum_padding"] = _sim_services.MonteCarloMaster_minimum_padding_set - __swig_getmethods__["minimum_padding"] = _sim_services.MonteCarloMaster_minimum_padding_get - if _newclass: - minimum_padding = _swig_property(_sim_services.MonteCarloMaster_minimum_padding_get, _sim_services.MonteCarloMaster_minimum_padding_set) - __swig_setmethods__["monte_run_number"] = _sim_services.MonteCarloMaster_monte_run_number_set - __swig_getmethods__["monte_run_number"] = _sim_services.MonteCarloMaster_monte_run_number_get - if _newclass: - monte_run_number = _swig_property(_sim_services.MonteCarloMaster_monte_run_number_get, _sim_services.MonteCarloMaster_monte_run_number_set) - - def __init__(self, *args): - this = _sim_services.new_MonteCarloMaster(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloMaster - __del__ = lambda self: None - - def activate(self, *args): - return _sim_services.MonteCarloMaster_activate(self, *args) - - def prepare_input_files(self, *args): - return _sim_services.MonteCarloMaster_prepare_input_files(self, *args) - - def add_variable(self, *args): - return _sim_services.MonteCarloMaster_add_variable(self, *args) - - def find_variable(self, *args): - return _sim_services.MonteCarloMaster_find_variable(self, *args) - - def remove_variable(self, *args): - return _sim_services.MonteCarloMaster_remove_variable(self, *args) - - def set_num_runs(self, *args): - return _sim_services.MonteCarloMaster_set_num_runs(self, *args) - - def execute(self, *args): - return _sim_services.MonteCarloMaster_execute(self, *args) - - def collate_meta_data(self, *args): - return _sim_services.MonteCarloMaster_collate_meta_data(self, *args) -MonteCarloMaster_swigregister = _sim_services.MonteCarloMaster_swigregister -MonteCarloMaster_swigregister(MonteCarloMaster) - -class MonteCarloVariableRandomUniform(MonteCarloVariableRandom): - __swig_setmethods__ = {} - for _s in [MonteCarloVariableRandom]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomUniform, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariableRandom]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomUniform, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableRandomUniform(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomUniform - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariableRandomUniform_generate_assignment(self, *args) - - def summarize_variable(self, *args): - return _sim_services.MonteCarloVariableRandomUniform_summarize_variable(self, *args) -MonteCarloVariableRandomUniform_swigregister = _sim_services.MonteCarloVariableRandomUniform_swigregister -MonteCarloVariableRandomUniform_swigregister(MonteCarloVariableRandomUniform) - -class MonteCarloVariableRandomUniformInt(MonteCarloVariableRandom): - __swig_setmethods__ = {} - for _s in [MonteCarloVariableRandom]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomUniformInt, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariableRandom]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomUniformInt, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableRandomUniformInt(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomUniformInt - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariableRandomUniformInt_generate_assignment(self, *args) - - def summarize_variable(self, *args): - return _sim_services.MonteCarloVariableRandomUniformInt_summarize_variable(self, *args) -MonteCarloVariableRandomUniformInt_swigregister = _sim_services.MonteCarloVariableRandomUniformInt_swigregister -MonteCarloVariableRandomUniformInt_swigregister(MonteCarloVariableRandomUniformInt) - -class MonteCarloVariableRandomStringSet(MonteCarloVariableRandomUniform): - __swig_setmethods__ = {} - for _s in [MonteCarloVariableRandomUniform]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomStringSet, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariableRandomUniform]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomStringSet, name) - __repr__ = _swig_repr - __swig_setmethods__["values"] = _sim_services.MonteCarloVariableRandomStringSet_values_set - __swig_getmethods__["values"] = _sim_services.MonteCarloVariableRandomStringSet_values_get - if _newclass: - values = _swig_property(_sim_services.MonteCarloVariableRandomStringSet_values_get, _sim_services.MonteCarloVariableRandomStringSet_values_set) - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableRandomStringSet(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomStringSet - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariableRandomStringSet_generate_assignment(self, *args) - - def summarize_variable(self, *args): - return _sim_services.MonteCarloVariableRandomStringSet_summarize_variable(self, *args) - - def add_string(self, *args): - return _sim_services.MonteCarloVariableRandomStringSet_add_string(self, *args) -MonteCarloVariableRandomStringSet_swigregister = _sim_services.MonteCarloVariableRandomStringSet_swigregister -MonteCarloVariableRandomStringSet_swigregister(MonteCarloVariableRandomStringSet) - -class MonteCarloVariableRandomBool(MonteCarloVariableRandomStringSet): - __swig_setmethods__ = {} - for _s in [MonteCarloVariableRandomStringSet]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomBool, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariableRandomStringSet]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomBool, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableRandomBool(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomBool - __del__ = lambda self: None -MonteCarloVariableRandomBool_swigregister = _sim_services.MonteCarloVariableRandomBool_swigregister -MonteCarloVariableRandomBool_swigregister(MonteCarloVariableRandomBool) - -class MonteCarloVariableRandomNormal(MonteCarloVariableRandom): - __swig_setmethods__ = {} - for _s in [MonteCarloVariableRandom]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarloVariableRandomNormal, name, value) - __swig_getmethods__ = {} - for _s in [MonteCarloVariableRandom]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarloVariableRandomNormal, name) - __repr__ = _swig_repr - StandardDeviation = _sim_services.MonteCarloVariableRandomNormal_StandardDeviation - Relative = _sim_services.MonteCarloVariableRandomNormal_Relative - Absolute = _sim_services.MonteCarloVariableRandomNormal_Absolute - __swig_setmethods__["max_num_tries"] = _sim_services.MonteCarloVariableRandomNormal_max_num_tries_set - __swig_getmethods__["max_num_tries"] = _sim_services.MonteCarloVariableRandomNormal_max_num_tries_get - if _newclass: - max_num_tries = _swig_property(_sim_services.MonteCarloVariableRandomNormal_max_num_tries_get, _sim_services.MonteCarloVariableRandomNormal_max_num_tries_set) - - def __init__(self, *args): - this = _sim_services.new_MonteCarloVariableRandomNormal(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarloVariableRandomNormal - __del__ = lambda self: None - - def generate_assignment(self, *args): - return _sim_services.MonteCarloVariableRandomNormal_generate_assignment(self, *args) - - def summarize_variable(self, *args): - return _sim_services.MonteCarloVariableRandomNormal_summarize_variable(self, *args) - - def truncate(self, *args): - return _sim_services.MonteCarloVariableRandomNormal_truncate(self, *args) - - def truncate_low(self, *args): - return _sim_services.MonteCarloVariableRandomNormal_truncate_low(self, *args) - - def truncate_high(self, *args): - return _sim_services.MonteCarloVariableRandomNormal_truncate_high(self, *args) - - def untruncate(self, *args): - return _sim_services.MonteCarloVariableRandomNormal_untruncate(self, *args) -MonteCarloVariableRandomNormal_swigregister = _sim_services.MonteCarloVariableRandomNormal_swigregister -MonteCarloVariableRandomNormal_swigregister(MonteCarloVariableRandomNormal) - -class Slave(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Slave, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Slave, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_Slave(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_setmethods__["activated"] = _sim_services.Slave_activated_set - __swig_getmethods__["activated"] = _sim_services.Slave_activated_get - if _newclass: - activated = _swig_property(_sim_services.Slave_activated_get, _sim_services.Slave_activated_set) - __swig_setmethods__["enabled"] = _sim_services.Slave_enabled_set - __swig_getmethods__["enabled"] = _sim_services.Slave_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.Slave_enabled_get, _sim_services.Slave_enabled_set) - __swig_setmethods__["reconnected"] = _sim_services.Slave_reconnected_set - __swig_getmethods__["reconnected"] = _sim_services.Slave_reconnected_get - if _newclass: - reconnected = _swig_property(_sim_services.Slave_reconnected_get, _sim_services.Slave_reconnected_set) - __swig_setmethods__["sent_reconnect_cmd"] = _sim_services.Slave_sent_reconnect_cmd_set - __swig_getmethods__["sent_reconnect_cmd"] = _sim_services.Slave_sent_reconnect_cmd_get - if _newclass: - sent_reconnect_cmd = _swig_property(_sim_services.Slave_sent_reconnect_cmd_get, _sim_services.Slave_sent_reconnect_cmd_set) - __swig_setmethods__["msg_published"] = _sim_services.Slave_msg_published_set - __swig_getmethods__["msg_published"] = _sim_services.Slave_msg_published_get - if _newclass: - msg_published = _swig_property(_sim_services.Slave_msg_published_get, _sim_services.Slave_msg_published_set) - __swig_setmethods__["chkpnt_name"] = _sim_services.Slave_chkpnt_name_set - __swig_getmethods__["chkpnt_name"] = _sim_services.Slave_chkpnt_name_get - if _newclass: - chkpnt_name = _swig_property(_sim_services.Slave_chkpnt_name_get, _sim_services.Slave_chkpnt_name_set) - __swig_setmethods__["sync_error_terminate"] = _sim_services.Slave_sync_error_terminate_set - __swig_getmethods__["sync_error_terminate"] = _sim_services.Slave_sync_error_terminate_get - if _newclass: - sync_error_terminate = _swig_property(_sim_services.Slave_sync_error_terminate_get, _sim_services.Slave_sync_error_terminate_set) - __swig_setmethods__["sync_wait_limit"] = _sim_services.Slave_sync_wait_limit_set - __swig_getmethods__["sync_wait_limit"] = _sim_services.Slave_sync_wait_limit_get - if _newclass: - sync_wait_limit = _swig_property(_sim_services.Slave_sync_wait_limit_get, _sim_services.Slave_sync_wait_limit_set) - __swig_setmethods__["connection"] = _sim_services.Slave_connection_set - __swig_getmethods__["connection"] = _sim_services.Slave_connection_get - if _newclass: - connection = _swig_property(_sim_services.Slave_connection_get, _sim_services.Slave_connection_set) - - def set_connection_type(self, *args): - return _sim_services.Slave_set_connection_type(self, *args) - - def process_sim_args(self, *args): - return _sim_services.Slave_process_sim_args(self, *args) - - def init(self, *args): - return _sim_services.Slave_init(self, *args) - - def get_checkpoint_name(self, *args): - return _sim_services.Slave_get_checkpoint_name(self, *args) - - def end_of_frame(self, *args): - return _sim_services.Slave_end_of_frame(self, *args) - - def freeze_init(self, *args): - return _sim_services.Slave_freeze_init(self, *args) - - def freeze(self, *args): - return _sim_services.Slave_freeze(self, *args) - - def unfreeze(self, *args): - return _sim_services.Slave_unfreeze(self, *args) - - def shutdown(self, *args): - return _sim_services.Slave_shutdown(self, *args) - __swig_destroy__ = _sim_services.delete_Slave - __del__ = lambda self: None -Slave_swigregister = _sim_services.Slave_swigregister -Slave_swigregister(Slave) - - -def ms_master_enable(*args): - return _sim_services.ms_master_enable(*args) -ms_master_enable = _sim_services.ms_master_enable - -def ms_master_disable(*args): - return _sim_services.ms_master_disable(*args) -ms_master_disable = _sim_services.ms_master_disable -class CheckPointRestart(Scheduler): - __swig_setmethods__ = {} - for _s in [Scheduler]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, CheckPointRestart, name, value) - __swig_getmethods__ = {} - for _s in [Scheduler]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, CheckPointRestart, name) - __repr__ = _swig_repr - __swig_setmethods__["checkpoint_times"] = _sim_services.CheckPointRestart_checkpoint_times_set - __swig_getmethods__["checkpoint_times"] = _sim_services.CheckPointRestart_checkpoint_times_get - if _newclass: - checkpoint_times = _swig_property(_sim_services.CheckPointRestart_checkpoint_times_get, _sim_services.CheckPointRestart_checkpoint_times_set) - __swig_setmethods__["safestore_period"] = _sim_services.CheckPointRestart_safestore_period_set - __swig_getmethods__["safestore_period"] = _sim_services.CheckPointRestart_safestore_period_get - if _newclass: - safestore_period = _swig_property(_sim_services.CheckPointRestart_safestore_period_get, _sim_services.CheckPointRestart_safestore_period_set) - __swig_setmethods__["safestore_time"] = _sim_services.CheckPointRestart_safestore_time_set - __swig_getmethods__["safestore_time"] = _sim_services.CheckPointRestart_safestore_time_get - if _newclass: - safestore_time = _swig_property(_sim_services.CheckPointRestart_safestore_time_get, _sim_services.CheckPointRestart_safestore_time_set) - __swig_setmethods__["pre_init_checkpoint"] = _sim_services.CheckPointRestart_pre_init_checkpoint_set - __swig_getmethods__["pre_init_checkpoint"] = _sim_services.CheckPointRestart_pre_init_checkpoint_get - if _newclass: - pre_init_checkpoint = _swig_property(_sim_services.CheckPointRestart_pre_init_checkpoint_get, _sim_services.CheckPointRestart_pre_init_checkpoint_set) - __swig_setmethods__["post_init_checkpoint"] = _sim_services.CheckPointRestart_post_init_checkpoint_set - __swig_getmethods__["post_init_checkpoint"] = _sim_services.CheckPointRestart_post_init_checkpoint_get - if _newclass: - post_init_checkpoint = _swig_property(_sim_services.CheckPointRestart_post_init_checkpoint_get, _sim_services.CheckPointRestart_post_init_checkpoint_set) - __swig_setmethods__["end_checkpoint"] = _sim_services.CheckPointRestart_end_checkpoint_set - __swig_getmethods__["end_checkpoint"] = _sim_services.CheckPointRestart_end_checkpoint_get - if _newclass: - end_checkpoint = _swig_property(_sim_services.CheckPointRestart_end_checkpoint_get, _sim_services.CheckPointRestart_end_checkpoint_set) - __swig_setmethods__["safestore_enabled"] = _sim_services.CheckPointRestart_safestore_enabled_set - __swig_getmethods__["safestore_enabled"] = _sim_services.CheckPointRestart_safestore_enabled_get - if _newclass: - safestore_enabled = _swig_property(_sim_services.CheckPointRestart_safestore_enabled_get, _sim_services.CheckPointRestart_safestore_enabled_set) - __swig_setmethods__["output_file"] = _sim_services.CheckPointRestart_output_file_set - __swig_getmethods__["output_file"] = _sim_services.CheckPointRestart_output_file_get - if _newclass: - output_file = _swig_property(_sim_services.CheckPointRestart_output_file_get, _sim_services.CheckPointRestart_output_file_set) - __swig_setmethods__["load_checkpoint_file_name"] = _sim_services.CheckPointRestart_load_checkpoint_file_name_set - __swig_getmethods__["load_checkpoint_file_name"] = _sim_services.CheckPointRestart_load_checkpoint_file_name_get - if _newclass: - load_checkpoint_file_name = _swig_property(_sim_services.CheckPointRestart_load_checkpoint_file_name_get, _sim_services.CheckPointRestart_load_checkpoint_file_name_set) - __swig_setmethods__["cpu_num"] = _sim_services.CheckPointRestart_cpu_num_set - __swig_getmethods__["cpu_num"] = _sim_services.CheckPointRestart_cpu_num_get - if _newclass: - cpu_num = _swig_property(_sim_services.CheckPointRestart_cpu_num_get, _sim_services.CheckPointRestart_cpu_num_set) - - def __init__(self, *args): - this = _sim_services.new_CheckPointRestart(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def set_pre_init_checkpoint(self, *args): - return _sim_services.CheckPointRestart_set_pre_init_checkpoint(self, *args) - - def set_post_init_checkpoint(self, *args): - return _sim_services.CheckPointRestart_set_post_init_checkpoint(self, *args) - - def set_end_checkpoint(self, *args): - return _sim_services.CheckPointRestart_set_end_checkpoint(self, *args) - - def set_safestore_enabled(self, *args): - return _sim_services.CheckPointRestart_set_safestore_enabled(self, *args) - - def get_output_file(self, *args): - return _sim_services.CheckPointRestart_get_output_file(self, *args) - - def get_load_file(self, *args): - return _sim_services.CheckPointRestart_get_load_file(self, *args) - - def set_cpu_num(self, *args): - return _sim_services.CheckPointRestart_set_cpu_num(self, *args) - - def find_write_checkpoint_jobs(self, *args): - return _sim_services.CheckPointRestart_find_write_checkpoint_jobs(self, *args) - - def set_safestore_time(self, *args): - return _sim_services.CheckPointRestart_set_safestore_time(self, *args) - - def checkpoint(self, *args): - return _sim_services.CheckPointRestart_checkpoint(self, *args) - - def write_pre_init_checkpoint(self, *args): - return _sim_services.CheckPointRestart_write_pre_init_checkpoint(self, *args) - - def write_post_init_checkpoint(self, *args): - return _sim_services.CheckPointRestart_write_post_init_checkpoint(self, *args) - - def write_end_checkpoint(self, *args): - return _sim_services.CheckPointRestart_write_end_checkpoint(self, *args) - - def write_checkpoint(self, *args): - return _sim_services.CheckPointRestart_write_checkpoint(self, *args) - - def safestore_checkpoint(self, *args): - return _sim_services.CheckPointRestart_safestore_checkpoint(self, *args) - - def load_checkpoint(self, *args): - return _sim_services.CheckPointRestart_load_checkpoint(self, *args) - - def load_checkpoint_job(self, *args): - return _sim_services.CheckPointRestart_load_checkpoint_job(self, *args) - - def write_s_job_execution(self, *args): - return _sim_services.CheckPointRestart_write_s_job_execution(self, *args) - - def instrument_job_before(self, *args): - return _sim_services.CheckPointRestart_instrument_job_before(self, *args) - - def instrument_job_after(self, *args): - return _sim_services.CheckPointRestart_instrument_job_after(self, *args) - - def instrument_job_remove(self, *args): - return _sim_services.CheckPointRestart_instrument_job_remove(self, *args) - __swig_destroy__ = _sim_services.delete_CheckPointRestart - __del__ = lambda self: None -CheckPointRestart_swigregister = _sim_services.CheckPointRestart_swigregister -CheckPointRestart_swigregister(CheckPointRestart) - - -def checkpoint_pre_init(*args): - return _sim_services.checkpoint_pre_init(*args) -checkpoint_pre_init = _sim_services.checkpoint_pre_init - -def checkpoint_post_init(*args): - return _sim_services.checkpoint_post_init(*args) -checkpoint_post_init = _sim_services.checkpoint_post_init - -def checkpoint_end(*args): - return _sim_services.checkpoint_end(*args) -checkpoint_end = _sim_services.checkpoint_end - -def get_checkpoint_pre_init(*args): - return _sim_services.get_checkpoint_pre_init(*args) -get_checkpoint_pre_init = _sim_services.get_checkpoint_pre_init - -def get_checkpoint_post_init(*args): - return _sim_services.get_checkpoint_post_init(*args) -get_checkpoint_post_init = _sim_services.get_checkpoint_post_init - -def get_checkpoint_end(*args): - return _sim_services.get_checkpoint_end(*args) -get_checkpoint_end = _sim_services.get_checkpoint_end - -def checkpoint_safestore(*args): - return _sim_services.checkpoint_safestore(*args) -checkpoint_safestore = _sim_services.checkpoint_safestore - -def checkpoint_cpu(*args): - return _sim_services.checkpoint_cpu(*args) -checkpoint_cpu = _sim_services.checkpoint_cpu - -def checkpoint_safestore_period(*args): - return _sim_services.checkpoint_safestore_period(*args) -checkpoint_safestore_period = _sim_services.checkpoint_safestore_period - -def checkpoint_get_output_file(*args): - return _sim_services.checkpoint_get_output_file(*args) -checkpoint_get_output_file = _sim_services.checkpoint_get_output_file - -def checkpoint_get_load_file(*args): - return _sim_services.checkpoint_get_load_file(*args) -checkpoint_get_load_file = _sim_services.checkpoint_get_load_file - -def checkpoint(*args): - return _sim_services.checkpoint(*args) -checkpoint = _sim_services.checkpoint - -def checkpoint_objects(*args): - return _sim_services.checkpoint_objects(*args) -checkpoint_objects = _sim_services.checkpoint_objects - -def load_checkpoint(*args): - return _sim_services.load_checkpoint(*args) -load_checkpoint = _sim_services.load_checkpoint - -def load_checkpoint_stls(*args): - return _sim_services.load_checkpoint_stls(*args) -load_checkpoint_stls = _sim_services.load_checkpoint_stls - -def load_checkpoint_job(*args): - return _sim_services.load_checkpoint_job(*args) -load_checkpoint_job = _sim_services.load_checkpoint_job - -def get_address(*args): - return _sim_services.get_address(*args) -get_address = _sim_services.get_address - -def next_attr_name(*args): - return _sim_services.next_attr_name(*args) -next_attr_name = _sim_services.next_attr_name - -def add_collect(*args): - return _sim_services.add_collect(*args) -add_collect = _sim_services.add_collect - -def delete_collect(*args): - return _sim_services.delete_collect(*args) -delete_collect = _sim_services.delete_collect -class AttributesMap(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, AttributesMap, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, AttributesMap, name) - __repr__ = _swig_repr - if _newclass: - attributes_map = staticmethod(_sim_services.AttributesMap_attributes_map) - else: - attributes_map = _sim_services.AttributesMap_attributes_map - - def __init__(self, *args): - this = _sim_services.new_AttributesMap(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_AttributesMap - __del__ = lambda self: None - - def add_attr(self, *args): - return _sim_services.AttributesMap_add_attr(self, *args) - - def get_attr(self, *args): - return _sim_services.AttributesMap_get_attr(self, *args) - - def replace_special_chars(self, *args): - return _sim_services.AttributesMap_replace_special_chars(self, *args) - - def type_remove_dims(self, *args): - return _sim_services.AttributesMap_type_remove_dims(self, *args) - - def print_xml(self, *args): - return _sim_services.AttributesMap_print_xml(self, *args) - - def print_json(self, *args): - return _sim_services.AttributesMap_print_json(self, *args) -AttributesMap_swigregister = _sim_services.AttributesMap_swigregister -AttributesMap_swigregister(AttributesMap) - -def AttributesMap_attributes_map(*args): - return _sim_services.AttributesMap_attributes_map(*args) -AttributesMap_attributes_map = _sim_services.AttributesMap_attributes_map - - -def sie_print_xml(*args): - return _sim_services.sie_print_xml(*args) -sie_print_xml = _sim_services.sie_print_xml - -def sie_class_attr_map_print_xml(*args): - return _sim_services.sie_class_attr_map_print_xml(*args) -sie_class_attr_map_print_xml = _sim_services.sie_class_attr_map_print_xml - -def sie_enum_attr_map_print_xml(*args): - return _sim_services.sie_enum_attr_map_print_xml(*args) -sie_enum_attr_map_print_xml = _sim_services.sie_enum_attr_map_print_xml - -def sie_top_level_objects_print_xml(*args): - return _sim_services.sie_top_level_objects_print_xml(*args) -sie_top_level_objects_print_xml = _sim_services.sie_top_level_objects_print_xml - -def sie_append_runtime_objs(*args): - return _sim_services.sie_append_runtime_objs(*args) -sie_append_runtime_objs = _sim_services.sie_append_runtime_objs - -def sie_get_runtime_sie_dir(*args): - return _sim_services.sie_get_runtime_sie_dir(*args) -sie_get_runtime_sie_dir = _sim_services.sie_get_runtime_sie_dir -class MessageSubscriber(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageSubscriber, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MessageSubscriber, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_setmethods__["enabled"] = _sim_services.MessageSubscriber_enabled_set - __swig_getmethods__["enabled"] = _sim_services.MessageSubscriber_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.MessageSubscriber_enabled_get, _sim_services.MessageSubscriber_enabled_set) - __swig_setmethods__["color"] = _sim_services.MessageSubscriber_color_set - __swig_getmethods__["color"] = _sim_services.MessageSubscriber_color_get - if _newclass: - color = _swig_property(_sim_services.MessageSubscriber_color_get, _sim_services.MessageSubscriber_color_set) - __swig_setmethods__["name"] = _sim_services.MessageSubscriber_name_set - __swig_getmethods__["name"] = _sim_services.MessageSubscriber_name_get - if _newclass: - name = _swig_property(_sim_services.MessageSubscriber_name_get, _sim_services.MessageSubscriber_name_set) - - def set_enabled(self, *args): - return _sim_services.MessageSubscriber_set_enabled(self, *args) - - def set_color(self, *args): - return _sim_services.MessageSubscriber_set_color(self, *args) - __swig_destroy__ = _sim_services.delete_MessageSubscriber - __del__ = lambda self: None - - def init(self, *args): - return _sim_services.MessageSubscriber_init(self, *args) - - def update(self, *args): - return _sim_services.MessageSubscriber_update(self, *args) - - def shutdown(self, *args): - return _sim_services.MessageSubscriber_shutdown(self, *args) -MessageSubscriber_swigregister = _sim_services.MessageSubscriber_swigregister -MessageSubscriber_swigregister(MessageSubscriber) - -class MessageCout(MessageSubscriber): - __swig_setmethods__ = {} - for _s in [MessageSubscriber]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageCout, name, value) - __swig_getmethods__ = {} - for _s in [MessageSubscriber]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageCout, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MessageCout(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def update(self, *args): - return _sim_services.MessageCout_update(self, *args) - __swig_destroy__ = _sim_services.delete_MessageCout - __del__ = lambda self: None -MessageCout_swigregister = _sim_services.MessageCout_swigregister -MessageCout_swigregister(MessageCout) - -class MessageThreadedCout(MessageSubscriber, SysThread): - __swig_setmethods__ = {} - for _s in [MessageSubscriber, SysThread]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageThreadedCout, name, value) - __swig_getmethods__ = {} - for _s in [MessageSubscriber, SysThread]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageThreadedCout, name) - __repr__ = _swig_repr - __swig_setmethods__["max_buffer_items"] = _sim_services.MessageThreadedCout_max_buffer_items_set - __swig_getmethods__["max_buffer_items"] = _sim_services.MessageThreadedCout_max_buffer_items_get - if _newclass: - max_buffer_items = _swig_property(_sim_services.MessageThreadedCout_max_buffer_items_get, _sim_services.MessageThreadedCout_max_buffer_items_set) - __swig_setmethods__["max_buffer_size"] = _sim_services.MessageThreadedCout_max_buffer_size_set - __swig_getmethods__["max_buffer_size"] = _sim_services.MessageThreadedCout_max_buffer_size_get - if _newclass: - max_buffer_size = _swig_property(_sim_services.MessageThreadedCout_max_buffer_size_get, _sim_services.MessageThreadedCout_max_buffer_size_set) - __swig_setmethods__["color_code"] = _sim_services.MessageThreadedCout_color_code_set - __swig_getmethods__["color_code"] = _sim_services.MessageThreadedCout_color_code_get - if _newclass: - color_code = _swig_property(_sim_services.MessageThreadedCout_color_code_get, _sim_services.MessageThreadedCout_color_code_set) - - def __init__(self, *args): - this = _sim_services.new_MessageThreadedCout(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MessageThreadedCout - __del__ = lambda self: None - - def init(self, *args): - return _sim_services.MessageThreadedCout_init(self, *args) - - def update(self, *args): - return _sim_services.MessageThreadedCout_update(self, *args) - - def shutdown(self, *args): - return _sim_services.MessageThreadedCout_shutdown(self, *args) - - def thread_body(self, *args): - return _sim_services.MessageThreadedCout_thread_body(self, *args) - - def dump(self, *args): - return _sim_services.MessageThreadedCout_dump(self, *args) - - def write_pending_messages(self, *args): - return _sim_services.MessageThreadedCout_write_pending_messages(self, *args) -MessageThreadedCout_swigregister = _sim_services.MessageThreadedCout_swigregister -MessageThreadedCout_swigregister(MessageThreadedCout) - -class MessageFile(MessageSubscriber): - __swig_setmethods__ = {} - for _s in [MessageSubscriber]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageFile, name, value) - __swig_getmethods__ = {} - for _s in [MessageSubscriber]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageFile, name) - __repr__ = _swig_repr - __swig_setmethods__["file_name"] = _sim_services.MessageFile_file_name_set - __swig_getmethods__["file_name"] = _sim_services.MessageFile_file_name_get - if _newclass: - file_name = _swig_property(_sim_services.MessageFile_file_name_get, _sim_services.MessageFile_file_name_set) - - def __init__(self, *args): - this = _sim_services.new_MessageFile(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MessageFile - __del__ = lambda self: None - - def update(self, *args): - return _sim_services.MessageFile_update(self, *args) - - def set_file_name(self, *args): - return _sim_services.MessageFile_set_file_name(self, *args) - - def init(self, *args): - return _sim_services.MessageFile_init(self, *args) - - def restart(self, *args): - return _sim_services.MessageFile_restart(self, *args) -MessageFile_swigregister = _sim_services.MessageFile_swigregister -MessageFile_swigregister(MessageFile) - -class MessageHSFile(MessageFile): - __swig_setmethods__ = {} - for _s in [MessageFile]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageHSFile, name, value) - __swig_getmethods__ = {} - for _s in [MessageFile]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageHSFile, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MessageHSFile(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def update(self, *args): - return _sim_services.MessageHSFile_update(self, *args) - __swig_destroy__ = _sim_services.delete_MessageHSFile - __del__ = lambda self: None -MessageHSFile_swigregister = _sim_services.MessageHSFile_swigregister -MessageHSFile_swigregister(MessageHSFile) - -class MessageCustomFile(MessageFile): - __swig_setmethods__ = {} - for _s in [MessageFile]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageCustomFile, name, value) - __swig_getmethods__ = {} - for _s in [MessageFile]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageCustomFile, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MessageCustomFile(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def update(self, *args): - return _sim_services.MessageCustomFile_update(self, *args) - - def get_level(self, *args): - return _sim_services.MessageCustomFile_get_level(self, *args) - - def set_level(self, *args): - return _sim_services.MessageCustomFile_set_level(self, *args) - - def set_name(self, *args): - return _sim_services.MessageCustomFile_set_name(self, *args) - - def set_file_name(self, *args): - return _sim_services.MessageCustomFile_set_file_name(self, *args) - __swig_destroy__ = _sim_services.delete_MessageCustomFile - __del__ = lambda self: None -MessageCustomFile_swigregister = _sim_services.MessageCustomFile_swigregister -MessageCustomFile_swigregister(MessageCustomFile) - -class MessageCustomManager(MessageSubscriber): - __swig_setmethods__ = {} - for _s in [MessageSubscriber]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageCustomManager, name, value) - __swig_getmethods__ = {} - for _s in [MessageSubscriber]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageCustomManager, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MessageCustomManager(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MessageCustomManager - __del__ = lambda self: None - - def open_custom_message_file(self, *args): - return _sim_services.MessageCustomManager_open_custom_message_file(self, *args) - - def update(self, *args): - return _sim_services.MessageCustomManager_update(self, *args) - - def restart(self, *args): - return _sim_services.MessageCustomManager_restart(self, *args) -MessageCustomManager_swigregister = _sim_services.MessageCustomManager_swigregister -MessageCustomManager_swigregister(MessageCustomManager) - -class MessageLCout(MessageSubscriber): - __swig_setmethods__ = {} - for _s in [MessageSubscriber]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageLCout, name, value) - __swig_getmethods__ = {} - for _s in [MessageSubscriber]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageLCout, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MessageLCout(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def update(self, *args): - return _sim_services.MessageLCout_update(self, *args) - __swig_destroy__ = _sim_services.delete_MessageLCout - __del__ = lambda self: None -MessageLCout_swigregister = _sim_services.MessageLCout_swigregister -MessageLCout_swigregister(MessageLCout) - -class MessagePublisher(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MessagePublisher, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MessagePublisher, name) - __repr__ = _swig_repr - __swig_setmethods__["sim_name"] = _sim_services.MessagePublisher_sim_name_set - __swig_getmethods__["sim_name"] = _sim_services.MessagePublisher_sim_name_get - if _newclass: - sim_name = _swig_property(_sim_services.MessagePublisher_sim_name_get, _sim_services.MessagePublisher_sim_name_set) - - def __init__(self, *args): - this = _sim_services.new_MessagePublisher(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MessagePublisher - __del__ = lambda self: None - - def init(self, *args): - return _sim_services.MessagePublisher_init(self, *args) - - def subscribe(self, *args): - return _sim_services.MessagePublisher_subscribe(self, *args) - - def unsubscribe(self, *args): - return _sim_services.MessagePublisher_unsubscribe(self, *args) - - def publish(self, *args): - return _sim_services.MessagePublisher_publish(self, *args) - - def getSubscriber(self, *args): - return _sim_services.MessagePublisher_getSubscriber(self, *args) -MessagePublisher_swigregister = _sim_services.MessagePublisher_swigregister -MessagePublisher_swigregister(MessagePublisher) - -class MessageTCDeviceListenThread(SysThread): - __swig_setmethods__ = {} - for _s in [SysThread]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageTCDeviceListenThread, name, value) - __swig_getmethods__ = {} - for _s in [SysThread]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageTCDeviceListenThread, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MessageTCDeviceListenThread(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MessageTCDeviceListenThread - __del__ = lambda self: None - - def get_port(self, *args): - return _sim_services.MessageTCDeviceListenThread_get_port(self, *args) - - def init_listen_device(self, *args): - return _sim_services.MessageTCDeviceListenThread_init_listen_device(self, *args) - - def restart(self, *args): - return _sim_services.MessageTCDeviceListenThread_restart(self, *args) - - def thread_body(self, *args): - return _sim_services.MessageTCDeviceListenThread_thread_body(self, *args) - - def dump(self, *args): - return _sim_services.MessageTCDeviceListenThread_dump(self, *args) -MessageTCDeviceListenThread_swigregister = _sim_services.MessageTCDeviceListenThread_swigregister -MessageTCDeviceListenThread_swigregister(MessageTCDeviceListenThread) - -class MessageTCDevice(MessageSubscriber): - __swig_setmethods__ = {} - for _s in [MessageSubscriber]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MessageTCDevice, name, value) - __swig_getmethods__ = {} - for _s in [MessageSubscriber]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MessageTCDevice, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MessageTCDevice(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MessageTCDevice - __del__ = lambda self: None - - def get_listen_thread(self, *args): - return _sim_services.MessageTCDevice_get_listen_thread(self, *args) - - def add_connection(self, *args): - return _sim_services.MessageTCDevice_add_connection(self, *args) - - def update(self, *args): - return _sim_services.MessageTCDevice_update(self, *args) - - def default_data(self, *args): - return _sim_services.MessageTCDevice_default_data(self, *args) - - def init(self, *args): - return _sim_services.MessageTCDevice_init(self, *args) - - def restart(self, *args): - return _sim_services.MessageTCDevice_restart(self, *args) - - def shutdown(self, *args): - return _sim_services.MessageTCDevice_shutdown(self, *args) - __swig_setmethods__["port"] = _sim_services.MessageTCDevice_port_set - __swig_getmethods__["port"] = _sim_services.MessageTCDevice_port_get - if _newclass: - port = _swig_property(_sim_services.MessageTCDevice_port_get, _sim_services.MessageTCDevice_port_set) -MessageTCDevice_swigregister = _sim_services.MessageTCDevice_swigregister -MessageTCDevice_swigregister(MessageTCDevice) - - -def message_subscribe(*args): - return _sim_services.message_subscribe(*args) -message_subscribe = _sim_services.message_subscribe - -def message_unsubscribe(*args): - return _sim_services.message_unsubscribe(*args) -message_unsubscribe = _sim_services.message_unsubscribe - -def open_custom_message_file(*args): - return _sim_services.open_custom_message_file(*args) -open_custom_message_file = _sim_services.open_custom_message_file -class MonteVar(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVar, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MonteVar, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_setmethods__["name"] = _sim_services.MonteVar_name_set - __swig_getmethods__["name"] = _sim_services.MonteVar_name_get - if _newclass: - name = _swig_property(_sim_services.MonteVar_name_get, _sim_services.MonteVar_name_set) - __swig_setmethods__["unit"] = _sim_services.MonteVar_unit_set - __swig_getmethods__["unit"] = _sim_services.MonteVar_unit_get - if _newclass: - unit = _swig_property(_sim_services.MonteVar_unit_get, _sim_services.MonteVar_unit_set) - __swig_setmethods__["value"] = _sim_services.MonteVar_value_set - __swig_getmethods__["value"] = _sim_services.MonteVar_value_get - if _newclass: - value = _swig_property(_sim_services.MonteVar_value_get, _sim_services.MonteVar_value_set) - __swig_destroy__ = _sim_services.delete_MonteVar - __del__ = lambda self: None - - def set_unit(self, *args): - return _sim_services.MonteVar_set_unit(self, *args) - - def describe_variable(self, *args): - return _sim_services.MonteVar_describe_variable(self, *args) -MonteVar_swigregister = _sim_services.MonteVar_swigregister -MonteVar_swigregister(MonteVar) - -class MonteVarVector(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarVector, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MonteVarVector, name) - __repr__ = _swig_repr - - def iterator(self, *args): - return _sim_services.MonteVarVector_iterator(self, *args) - def __iter__(self): - return self.iterator() - - def __nonzero__(self, *args): - return _sim_services.MonteVarVector___nonzero__(self, *args) - - def __bool__(self, *args): - return _sim_services.MonteVarVector___bool__(self, *args) - - def __len__(self, *args): - return _sim_services.MonteVarVector___len__(self, *args) - - def __getslice__(self, *args): - return _sim_services.MonteVarVector___getslice__(self, *args) - - def __setslice__(self, *args): - return _sim_services.MonteVarVector___setslice__(self, *args) - - def __delslice__(self, *args): - return _sim_services.MonteVarVector___delslice__(self, *args) - - def __delitem__(self, *args): - return _sim_services.MonteVarVector___delitem__(self, *args) - - def __getitem__(self, *args): - return _sim_services.MonteVarVector___getitem__(self, *args) - - def __setitem__(self, *args): - return _sim_services.MonteVarVector___setitem__(self, *args) - - def pop(self, *args): - return _sim_services.MonteVarVector_pop(self, *args) - - def append(self, *args): - return _sim_services.MonteVarVector_append(self, *args) - - def empty(self, *args): - return _sim_services.MonteVarVector_empty(self, *args) - - def size(self, *args): - return _sim_services.MonteVarVector_size(self, *args) - - def swap(self, *args): - return _sim_services.MonteVarVector_swap(self, *args) - - def begin(self, *args): - return _sim_services.MonteVarVector_begin(self, *args) - - def end(self, *args): - return _sim_services.MonteVarVector_end(self, *args) - - def rbegin(self, *args): - return _sim_services.MonteVarVector_rbegin(self, *args) - - def rend(self, *args): - return _sim_services.MonteVarVector_rend(self, *args) - - def clear(self, *args): - return _sim_services.MonteVarVector_clear(self, *args) - - def get_allocator(self, *args): - return _sim_services.MonteVarVector_get_allocator(self, *args) - - def pop_back(self, *args): - return _sim_services.MonteVarVector_pop_back(self, *args) - - def erase(self, *args): - return _sim_services.MonteVarVector_erase(self, *args) - - def __init__(self, *args): - this = _sim_services.new_MonteVarVector(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def push_back(self, *args): - return _sim_services.MonteVarVector_push_back(self, *args) - - def front(self, *args): - return _sim_services.MonteVarVector_front(self, *args) - - def back(self, *args): - return _sim_services.MonteVarVector_back(self, *args) - - def assign(self, *args): - return _sim_services.MonteVarVector_assign(self, *args) - - def resize(self, *args): - return _sim_services.MonteVarVector_resize(self, *args) - - def insert(self, *args): - return _sim_services.MonteVarVector_insert(self, *args) - - def reserve(self, *args): - return _sim_services.MonteVarVector_reserve(self, *args) - - def capacity(self, *args): - return _sim_services.MonteVarVector_capacity(self, *args) - __swig_destroy__ = _sim_services.delete_MonteVarVector - __del__ = lambda self: None -MonteVarVector_swigregister = _sim_services.MonteVarVector_swigregister -MonteVarVector_swigregister(MonteVarVector) - -class MonteRun(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteRun, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MonteRun, name) - __repr__ = _swig_repr - MC_RUN_INCOMPLETE = _sim_services.MonteRun_MC_RUN_INCOMPLETE - MC_RUN_COMPLETE = _sim_services.MonteRun_MC_RUN_COMPLETE - MC_RUN_FAILED = _sim_services.MonteRun_MC_RUN_FAILED - MC_RUN_DUMPED_CORE = _sim_services.MonteRun_MC_RUN_DUMPED_CORE - MC_RUN_TIMED_OUT = _sim_services.MonteRun_MC_RUN_TIMED_OUT - MC_CANT_CREATE_OUTPUT_DIR = _sim_services.MonteRun_MC_CANT_CREATE_OUTPUT_DIR - MC_PROBLEM_PARSING_INPUT = _sim_services.MonteRun_MC_PROBLEM_PARSING_INPUT - MC_UNRECOGNIZED_RETURN_CODE = _sim_services.MonteRun_MC_UNRECOGNIZED_RETURN_CODE - __swig_setmethods__["id"] = _sim_services.MonteRun_id_set - __swig_getmethods__["id"] = _sim_services.MonteRun_id_get - if _newclass: - id = _swig_property(_sim_services.MonteRun_id_get, _sim_services.MonteRun_id_set) - __swig_setmethods__["num_tries"] = _sim_services.MonteRun_num_tries_set - __swig_getmethods__["num_tries"] = _sim_services.MonteRun_num_tries_get - if _newclass: - num_tries = _swig_property(_sim_services.MonteRun_num_tries_get, _sim_services.MonteRun_num_tries_set) - __swig_setmethods__["start_time"] = _sim_services.MonteRun_start_time_set - __swig_getmethods__["start_time"] = _sim_services.MonteRun_start_time_get - if _newclass: - start_time = _swig_property(_sim_services.MonteRun_start_time_get, _sim_services.MonteRun_start_time_set) - __swig_setmethods__["end_time"] = _sim_services.MonteRun_end_time_set - __swig_getmethods__["end_time"] = _sim_services.MonteRun_end_time_get - if _newclass: - end_time = _swig_property(_sim_services.MonteRun_end_time_get, _sim_services.MonteRun_end_time_set) - __swig_setmethods__["variables"] = _sim_services.MonteRun_variables_set - __swig_getmethods__["variables"] = _sim_services.MonteRun_variables_get - if _newclass: - variables = _swig_property(_sim_services.MonteRun_variables_get, _sim_services.MonteRun_variables_set) - __swig_setmethods__["exit_status"] = _sim_services.MonteRun_exit_status_set - __swig_getmethods__["exit_status"] = _sim_services.MonteRun_exit_status_get - if _newclass: - exit_status = _swig_property(_sim_services.MonteRun_exit_status_get, _sim_services.MonteRun_exit_status_set) - - def __init__(self, *args): - this = _sim_services.new_MonteRun(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def exit_status_string(self, *args): - return _sim_services.MonteRun_exit_status_string(self, *args) - __swig_destroy__ = _sim_services.delete_MonteRun - __del__ = lambda self: None -MonteRun_swigregister = _sim_services.MonteRun_swigregister -MonteRun_swigregister(MonteRun) - -class MonteSlave(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteSlave, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MonteSlave, name) - __repr__ = _swig_repr - MC_UNINITIALIZED = _sim_services.MonteSlave_MC_UNINITIALIZED - MC_INITIALIZING = _sim_services.MonteSlave_MC_INITIALIZING - MC_READY = _sim_services.MonteSlave_MC_READY - MC_RUNNING = _sim_services.MonteSlave_MC_RUNNING - MC_STOPPING = _sim_services.MonteSlave_MC_STOPPING - MC_STOPPED = _sim_services.MonteSlave_MC_STOPPED - MC_FINISHED = _sim_services.MonteSlave_MC_FINISHED - MC_UNRESPONSIVE_RUNNING = _sim_services.MonteSlave_MC_UNRESPONSIVE_RUNNING - MC_UNRESPONSIVE_STOPPING = _sim_services.MonteSlave_MC_UNRESPONSIVE_STOPPING - MC_DISCONNECTED = _sim_services.MonteSlave_MC_DISCONNECTED - MC_PROCESS_RUN = _sim_services.MonteSlave_MC_PROCESS_RUN - MC_SHUTDOWN = _sim_services.MonteSlave_MC_SHUTDOWN - MC_DIE = _sim_services.MonteSlave_MC_DIE - __swig_setmethods__["id"] = _sim_services.MonteSlave_id_set - __swig_getmethods__["id"] = _sim_services.MonteSlave_id_get - if _newclass: - id = _swig_property(_sim_services.MonteSlave_id_get, _sim_services.MonteSlave_id_set) - __swig_setmethods__["state"] = _sim_services.MonteSlave_state_set - __swig_getmethods__["state"] = _sim_services.MonteSlave_state_get - if _newclass: - state = _swig_property(_sim_services.MonteSlave_state_get, _sim_services.MonteSlave_state_set) - __swig_setmethods__["machine_name"] = _sim_services.MonteSlave_machine_name_set - __swig_getmethods__["machine_name"] = _sim_services.MonteSlave_machine_name_get - if _newclass: - machine_name = _swig_property(_sim_services.MonteSlave_machine_name_get, _sim_services.MonteSlave_machine_name_set) - __swig_setmethods__["port"] = _sim_services.MonteSlave_port_set - __swig_getmethods__["port"] = _sim_services.MonteSlave_port_get - if _newclass: - port = _swig_property(_sim_services.MonteSlave_port_get, _sim_services.MonteSlave_port_set) - __swig_setmethods__["current_run"] = _sim_services.MonteSlave_current_run_set - __swig_getmethods__["current_run"] = _sim_services.MonteSlave_current_run_get - if _newclass: - current_run = _swig_property(_sim_services.MonteSlave_current_run_get, _sim_services.MonteSlave_current_run_set) - __swig_setmethods__["num_dispatches"] = _sim_services.MonteSlave_num_dispatches_set - __swig_getmethods__["num_dispatches"] = _sim_services.MonteSlave_num_dispatches_get - if _newclass: - num_dispatches = _swig_property(_sim_services.MonteSlave_num_dispatches_get, _sim_services.MonteSlave_num_dispatches_set) - __swig_setmethods__["num_results"] = _sim_services.MonteSlave_num_results_set - __swig_getmethods__["num_results"] = _sim_services.MonteSlave_num_results_get - if _newclass: - num_results = _swig_property(_sim_services.MonteSlave_num_results_get, _sim_services.MonteSlave_num_results_set) - __swig_setmethods__["cpu_time"] = _sim_services.MonteSlave_cpu_time_set - __swig_getmethods__["cpu_time"] = _sim_services.MonteSlave_cpu_time_get - if _newclass: - cpu_time = _swig_property(_sim_services.MonteSlave_cpu_time_get, _sim_services.MonteSlave_cpu_time_set) - __swig_setmethods__["remote_shell"] = _sim_services.MonteSlave_remote_shell_set - __swig_getmethods__["remote_shell"] = _sim_services.MonteSlave_remote_shell_get - if _newclass: - remote_shell = _swig_property(_sim_services.MonteSlave_remote_shell_get, _sim_services.MonteSlave_remote_shell_set) - __swig_setmethods__["user_remote_shell"] = _sim_services.MonteSlave_user_remote_shell_set - __swig_getmethods__["user_remote_shell"] = _sim_services.MonteSlave_user_remote_shell_get - if _newclass: - user_remote_shell = _swig_property(_sim_services.MonteSlave_user_remote_shell_get, _sim_services.MonteSlave_user_remote_shell_set) - __swig_setmethods__["remote_shell_args"] = _sim_services.MonteSlave_remote_shell_args_set - __swig_getmethods__["remote_shell_args"] = _sim_services.MonteSlave_remote_shell_args_get - if _newclass: - remote_shell_args = _swig_property(_sim_services.MonteSlave_remote_shell_args_get, _sim_services.MonteSlave_remote_shell_args_set) - __swig_setmethods__["multiplier"] = _sim_services.MonteSlave_multiplier_set - __swig_getmethods__["multiplier"] = _sim_services.MonteSlave_multiplier_get - if _newclass: - multiplier = _swig_property(_sim_services.MonteSlave_multiplier_get, _sim_services.MonteSlave_multiplier_set) - __swig_setmethods__["sim_path"] = _sim_services.MonteSlave_sim_path_set - __swig_getmethods__["sim_path"] = _sim_services.MonteSlave_sim_path_get - if _newclass: - sim_path = _swig_property(_sim_services.MonteSlave_sim_path_get, _sim_services.MonteSlave_sim_path_set) - __swig_setmethods__["S_main_name"] = _sim_services.MonteSlave_S_main_name_set - __swig_getmethods__["S_main_name"] = _sim_services.MonteSlave_S_main_name_get - if _newclass: - S_main_name = _swig_property(_sim_services.MonteSlave_S_main_name_get, _sim_services.MonteSlave_S_main_name_set) - - def set_S_main_name(self, *args): - return _sim_services.MonteSlave_set_S_main_name(self, *args) - - def __init__(self, *args): - this = _sim_services.new_MonteSlave(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteSlave - __del__ = lambda self: None -MonteSlave_swigregister = _sim_services.MonteSlave_swigregister -MonteSlave_swigregister(MonteSlave) - -class MonteRange(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteRange, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, MonteRange, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteRange(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def get_start(self, *args): - return _sim_services.MonteRange_get_start(self, *args) - - def get_end(self, *args): - return _sim_services.MonteRange_get_end(self, *args) - __swig_destroy__ = _sim_services.delete_MonteRange - __del__ = lambda self: None -MonteRange_swigregister = _sim_services.MonteRange_swigregister -MonteRange_swigregister(MonteRange) - -class MonteCarlo(Scheduler): - __swig_setmethods__ = {} - for _s in [Scheduler]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteCarlo, name, value) - __swig_getmethods__ = {} - for _s in [Scheduler]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteCarlo, name) - __repr__ = _swig_repr - MC_NONE = _sim_services.MonteCarlo_MC_NONE - MC_ERROR = _sim_services.MonteCarlo_MC_ERROR - MC_INFORMATIONAL = _sim_services.MonteCarlo_MC_INFORMATIONAL - MC_ALL = _sim_services.MonteCarlo_MC_ALL - __swig_setmethods__["slave_sim_options"] = _sim_services.MonteCarlo_slave_sim_options_set - __swig_getmethods__["slave_sim_options"] = _sim_services.MonteCarlo_slave_sim_options_get - if _newclass: - slave_sim_options = _swig_property(_sim_services.MonteCarlo_slave_sim_options_get, _sim_services.MonteCarlo_slave_sim_options_set) - __swig_setmethods__["slave_output_directory"] = _sim_services.MonteCarlo_slave_output_directory_set - __swig_getmethods__["slave_output_directory"] = _sim_services.MonteCarlo_slave_output_directory_get - if _newclass: - slave_output_directory = _swig_property(_sim_services.MonteCarlo_slave_output_directory_get, _sim_services.MonteCarlo_slave_output_directory_set) - - def __init__(self, *args): - this = _sim_services.new_MonteCarlo(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MonteCarlo - __del__ = lambda self: None - - def execute_monte(self, *args): - return _sim_services.MonteCarlo_execute_monte(self, *args) - - def set_enabled(self, *args): - return _sim_services.MonteCarlo_set_enabled(self, *args) - - def get_enabled(self, *args): - return _sim_services.MonteCarlo_get_enabled(self, *args) - - def set_dry_run(self, *args): - return _sim_services.MonteCarlo_set_dry_run(self, *args) - - def get_dry_run(self, *args): - return _sim_services.MonteCarlo_get_dry_run(self, *args) - - def is_slave(self, *args): - return _sim_services.MonteCarlo_is_slave(self, *args) - - def is_master(self, *args): - return _sim_services.MonteCarlo_is_master(self, *args) - - def set_localhost_as_remote(self, *args): - return _sim_services.MonteCarlo_set_localhost_as_remote(self, *args) - - def get_localhost_as_remote(self, *args): - return _sim_services.MonteCarlo_get_localhost_as_remote(self, *args) - - def set_custom_slave_dispatch(self, *args): - return _sim_services.MonteCarlo_set_custom_slave_dispatch(self, *args) - - def get_custom_slave_dispatch(self, *args): - return _sim_services.MonteCarlo_get_custom_slave_dispatch(self, *args) - - def set_timeout(self, *args): - return _sim_services.MonteCarlo_set_timeout(self, *args) - - def get_timeout(self, *args): - return _sim_services.MonteCarlo_get_timeout(self, *args) - - def set_max_tries(self, *args): - return _sim_services.MonteCarlo_set_max_tries(self, *args) - - def get_max_tries(self, *args): - return _sim_services.MonteCarlo_get_max_tries(self, *args) - - def set_user_cmd_string(self, *args): - return _sim_services.MonteCarlo_set_user_cmd_string(self, *args) - - def get_user_cmd_string(self, *args): - return _sim_services.MonteCarlo_get_user_cmd_string(self, *args) - - def get_user_cmd_string_c_str(self, *args): - return _sim_services.MonteCarlo_get_user_cmd_string_c_str(self, *args) - - def set_custom_pre_text(self, *args): - return _sim_services.MonteCarlo_set_custom_pre_text(self, *args) - - def get_custom_pre_text(self, *args): - return _sim_services.MonteCarlo_get_custom_pre_text(self, *args) - - def get_custom_pre_text_c_str(self, *args): - return _sim_services.MonteCarlo_get_custom_pre_text_c_str(self, *args) - - def set_custom_post_text(self, *args): - return _sim_services.MonteCarlo_set_custom_post_text(self, *args) - - def get_custom_post_text(self, *args): - return _sim_services.MonteCarlo_get_custom_post_text(self, *args) - - def get_custom_post_text_c_str(self, *args): - return _sim_services.MonteCarlo_get_custom_post_text_c_str(self, *args) - - def set_verbosity(self, *args): - return _sim_services.MonteCarlo_set_verbosity(self, *args) - - def get_verbosity(self, *args): - return _sim_services.MonteCarlo_get_verbosity(self, *args) - - def set_num_runs(self, *args): - return _sim_services.MonteCarlo_set_num_runs(self, *args) - - def get_num_runs(self, *args): - return _sim_services.MonteCarlo_get_num_runs(self, *args) - - def get_num_results(self, *args): - return _sim_services.MonteCarlo_get_num_results(self, *args) - - def get_slave_id(self, *args): - return _sim_services.MonteCarlo_get_slave_id(self, *args) - - def add_range(self, *args): - return _sim_services.MonteCarlo_add_range(self, *args) - - def in_range(self, *args): - return _sim_services.MonteCarlo_in_range(self, *args) - - def get_ranges(self, *args): - return _sim_services.MonteCarlo_get_ranges(self, *args) - - def add_variable(self, *args): - return _sim_services.MonteCarlo_add_variable(self, *args) - - def get_variable(self, *args): - return _sim_services.MonteCarlo_get_variable(self, *args) - - def get_variables(self, *args): - return _sim_services.MonteCarlo_get_variables(self, *args) - - def add_slave(self, *args): - return _sim_services.MonteCarlo_add_slave(self, *args) - - def start_slave(self, *args): - return _sim_services.MonteCarlo_start_slave(self, *args) - - def stop_slave(self, *args): - return _sim_services.MonteCarlo_stop_slave(self, *args) - - def disable_slave(self, *args): - return _sim_services.MonteCarlo_disable_slave(self, *args) - - def process_sim_args(self, *args): - return _sim_services.MonteCarlo_process_sim_args(self, *args) - - def shutdown(self, *args): - return _sim_services.MonteCarlo_shutdown(self, *args) - - def get_current_run(self, *args): - return _sim_services.MonteCarlo_get_current_run(self, *args) - - def set_current_run(self, *args): - return _sim_services.MonteCarlo_set_current_run(self, *args) - - def set_listen_device_port(self, *args): - return _sim_services.MonteCarlo_set_listen_device_port(self, *args) - - def set_connection_device_port(self, *args): - return _sim_services.MonteCarlo_set_connection_device_port(self, *args) - - def get_listen_device_port(self, *args): - return _sim_services.MonteCarlo_get_listen_device_port(self, *args) - - def get_connection_device_port(self, *args): - return _sim_services.MonteCarlo_get_connection_device_port(self, *args) - - def write(self, *args): - return _sim_services.MonteCarlo_write(self, *args) - - def read(self, *args): - return _sim_services.MonteCarlo_read(self, *args) -MonteCarlo_swigregister = _sim_services.MonteCarlo_swigregister -MonteCarlo_swigregister(MonteCarlo) - - -def tc_init(*args): - return _sim_services.tc_init(*args) -tc_init = _sim_services.tc_init - -def tc_init_with_connection_info(*args): - return _sim_services.tc_init_with_connection_info(*args) -tc_init_with_connection_info = _sim_services.tc_init_with_connection_info - -def tc_listen(*args): - return _sim_services.tc_listen(*args) -tc_listen = _sim_services.tc_listen - -def tc_accept_(*args): - return _sim_services.tc_accept_(*args) -tc_accept_ = _sim_services.tc_accept_ - -def tc_connect_(*args): - return _sim_services.tc_connect_(*args) -tc_connect_ = _sim_services.tc_connect_ - -def tc_clock_init(*args): - return _sim_services.tc_clock_init(*args) -tc_clock_init = _sim_services.tc_clock_init - -def tc_clock_time(*args): - return _sim_services.tc_clock_time(*args) -tc_clock_time = _sim_services.tc_clock_time - -def tc_pending(*args): - return _sim_services.tc_pending(*args) -tc_pending = _sim_services.tc_pending - -def tc_blockio(*args): - return _sim_services.tc_blockio(*args) -tc_blockio = _sim_services.tc_blockio - -def tc_isValid(*args): - return _sim_services.tc_isValid(*args) -tc_isValid = _sim_services.tc_isValid - -def tc_set_blockio_timeout_limit(*args): - return _sim_services.tc_set_blockio_timeout_limit(*args) -tc_set_blockio_timeout_limit = _sim_services.tc_set_blockio_timeout_limit - -def tc_read_(*args): - return _sim_services.tc_read_(*args) -tc_read_ = _sim_services.tc_read_ - -def tc_read_byteswap(*args): - return _sim_services.tc_read_byteswap(*args) -tc_read_byteswap = _sim_services.tc_read_byteswap - -def tc_write_(*args): - return _sim_services.tc_write_(*args) -tc_write_ = _sim_services.tc_write_ - -def tc_write_byteswap(*args): - return _sim_services.tc_write_byteswap(*args) -tc_write_byteswap = _sim_services.tc_write_byteswap - -def tc_disconnect(*args): - return _sim_services.tc_disconnect(*args) -tc_disconnect = _sim_services.tc_disconnect - -def tc_multiconnect(*args): - return _sim_services.tc_multiconnect(*args) -tc_multiconnect = _sim_services.tc_multiconnect - -def tc_init_udp_client(*args): - return _sim_services.tc_init_udp_client(*args) -tc_init_udp_client = _sim_services.tc_init_udp_client - -def tc_init_udp_server(*args): - return _sim_services.tc_init_udp_server(*args) -tc_init_udp_server = _sim_services.tc_init_udp_server - -def tc_init_mcast_client(*args): - return _sim_services.tc_init_mcast_client(*args) -tc_init_mcast_client = _sim_services.tc_init_mcast_client - -def tc_init_mcast_server(*args): - return _sim_services.tc_init_mcast_server(*args) -tc_init_mcast_server = _sim_services.tc_init_mcast_server - -def tc_broadcast_conninfo(*args): - return _sim_services.tc_broadcast_conninfo(*args) -tc_broadcast_conninfo = _sim_services.tc_broadcast_conninfo - -def tc_error(*args): - return _sim_services.tc_error(*args) -tc_error = _sim_services.tc_error - -def tc_dev_copy(*args): - return _sim_services.tc_dev_copy(*args) -tc_dev_copy = _sim_services.tc_dev_copy - -def trick_bswap_buffer(*args): - return _sim_services.trick_bswap_buffer(*args) -trick_bswap_buffer = _sim_services.trick_bswap_buffer - -def trick_bswap_single_parameter(*args): - return _sim_services.trick_bswap_single_parameter(*args) -trick_bswap_single_parameter = _sim_services.trick_bswap_single_parameter - -def mc_set_enabled(*args): - return _sim_services.mc_set_enabled(*args) -mc_set_enabled = _sim_services.mc_set_enabled - -def mc_get_enabled(*args): - return _sim_services.mc_get_enabled(*args) -mc_get_enabled = _sim_services.mc_get_enabled - -def mc_set_dry_run(*args): - return _sim_services.mc_set_dry_run(*args) -mc_set_dry_run = _sim_services.mc_set_dry_run - -def mc_get_dry_run(*args): - return _sim_services.mc_get_dry_run(*args) -mc_get_dry_run = _sim_services.mc_get_dry_run - -def mc_is_slave(*args): - return _sim_services.mc_is_slave(*args) -mc_is_slave = _sim_services.mc_is_slave - -def mc_set_localhost_as_remote(*args): - return _sim_services.mc_set_localhost_as_remote(*args) -mc_set_localhost_as_remote = _sim_services.mc_set_localhost_as_remote - -def mc_get_localhost_as_remote(*args): - return _sim_services.mc_get_localhost_as_remote(*args) -mc_get_localhost_as_remote = _sim_services.mc_get_localhost_as_remote - -def mc_set_custom_slave_dispatch(*args): - return _sim_services.mc_set_custom_slave_dispatch(*args) -mc_set_custom_slave_dispatch = _sim_services.mc_set_custom_slave_dispatch - -def mc_get_custom_slave_dispatch(*args): - return _sim_services.mc_get_custom_slave_dispatch(*args) -mc_get_custom_slave_dispatch = _sim_services.mc_get_custom_slave_dispatch - -def mc_set_timeout(*args): - return _sim_services.mc_set_timeout(*args) -mc_set_timeout = _sim_services.mc_set_timeout - -def mc_get_timeout(*args): - return _sim_services.mc_get_timeout(*args) -mc_get_timeout = _sim_services.mc_get_timeout - -def mc_set_max_tries(*args): - return _sim_services.mc_set_max_tries(*args) -mc_set_max_tries = _sim_services.mc_set_max_tries - -def mc_get_max_tries(*args): - return _sim_services.mc_get_max_tries(*args) -mc_get_max_tries = _sim_services.mc_get_max_tries - -def mc_set_user_cmd_string(*args): - return _sim_services.mc_set_user_cmd_string(*args) -mc_set_user_cmd_string = _sim_services.mc_set_user_cmd_string - -def mc_set_slave_sim_options(*args): - return _sim_services.mc_set_slave_sim_options(*args) -mc_set_slave_sim_options = _sim_services.mc_set_slave_sim_options - -def mc_set_slave_output_directory(*args): - return _sim_services.mc_set_slave_output_directory(*args) -mc_set_slave_output_directory = _sim_services.mc_set_slave_output_directory - -def mc_get_slave_sim_options(*args): - return _sim_services.mc_get_slave_sim_options(*args) -mc_get_slave_sim_options = _sim_services.mc_get_slave_sim_options - -def mc_get_user_cmd_string(*args): - return _sim_services.mc_get_user_cmd_string(*args) -mc_get_user_cmd_string = _sim_services.mc_get_user_cmd_string - -def mc_set_custom_pre_text(*args): - return _sim_services.mc_set_custom_pre_text(*args) -mc_set_custom_pre_text = _sim_services.mc_set_custom_pre_text - -def mc_get_custom_pre_text(*args): - return _sim_services.mc_get_custom_pre_text(*args) -mc_get_custom_pre_text = _sim_services.mc_get_custom_pre_text - -def mc_set_custom_post_text(*args): - return _sim_services.mc_set_custom_post_text(*args) -mc_set_custom_post_text = _sim_services.mc_set_custom_post_text - -def mc_get_custom_post_text(*args): - return _sim_services.mc_get_custom_post_text(*args) -mc_get_custom_post_text = _sim_services.mc_get_custom_post_text - -def mc_set_verbosity(*args): - return _sim_services.mc_set_verbosity(*args) -mc_set_verbosity = _sim_services.mc_set_verbosity - -def mc_get_verbosity(*args): - return _sim_services.mc_get_verbosity(*args) -mc_get_verbosity = _sim_services.mc_get_verbosity - -def mc_set_num_runs(*args): - return _sim_services.mc_set_num_runs(*args) -mc_set_num_runs = _sim_services.mc_set_num_runs - -def mc_get_num_runs(*args): - return _sim_services.mc_get_num_runs(*args) -mc_get_num_runs = _sim_services.mc_get_num_runs - -def mc_get_num_results(*args): - return _sim_services.mc_get_num_results(*args) -mc_get_num_results = _sim_services.mc_get_num_results - -def mc_get_slave_id(*args): - return _sim_services.mc_get_slave_id(*args) -mc_get_slave_id = _sim_services.mc_get_slave_id - -def mc_add_range(*args): - return _sim_services.mc_add_range(*args) -mc_add_range = _sim_services.mc_add_range - -def mc_add_slave(*args): - return _sim_services.mc_add_slave(*args) -mc_add_slave = _sim_services.mc_add_slave - -def mc_start_slave(*args): - return _sim_services.mc_start_slave(*args) -mc_start_slave = _sim_services.mc_start_slave - -def mc_stop_slave(*args): - return _sim_services.mc_stop_slave(*args) -mc_stop_slave = _sim_services.mc_stop_slave - -def mc_write(*args): - return _sim_services.mc_write(*args) -mc_write = _sim_services.mc_write - -def mc_read(*args): - return _sim_services.mc_read(*args) -mc_read = _sim_services.mc_read - -def mc_get_current_run(*args): - return _sim_services.mc_get_current_run(*args) -mc_get_current_run = _sim_services.mc_get_current_run - -def mc_set_current_run(*args): - return _sim_services.mc_set_current_run(*args) -mc_set_current_run = _sim_services.mc_set_current_run - -def mc_set_listen_device_port(*args): - return _sim_services.mc_set_listen_device_port(*args) -mc_set_listen_device_port = _sim_services.mc_set_listen_device_port - -def mc_set_connection_device_port(*args): - return _sim_services.mc_set_connection_device_port(*args) -mc_set_connection_device_port = _sim_services.mc_set_connection_device_port - -def mc_get_listen_device_port(*args): - return _sim_services.mc_get_listen_device_port(*args) -mc_get_listen_device_port = _sim_services.mc_get_listen_device_port - -def mc_get_connection_device_port(*args): - return _sim_services.mc_get_connection_device_port(*args) -mc_get_connection_device_port = _sim_services.mc_get_connection_device_port -class MonteVarCalculated(MonteVar): - __swig_setmethods__ = {} - for _s in [MonteVar]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarCalculated, name, value) - __swig_getmethods__ = {} - for _s in [MonteVar]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteVarCalculated, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteVarCalculated(*args) - try: self.this.append(this) - except: self.this = this - this.own(0) - self.this.own(0) - - - - def describe_variable(self): - return _sim_services.MonteVarCalculated_describe_variable(self) - __swig_destroy__ = _sim_services.delete_MonteVarCalculated - __del__ = lambda self: None -MonteVarCalculated_swigregister = _sim_services.MonteVarCalculated_swigregister -MonteVarCalculated_swigregister(MonteVarCalculated) - -class MonteVarFile(MonteVar): - __swig_setmethods__ = {} - for _s in [MonteVar]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarFile, name, value) - __swig_getmethods__ = {} - for _s in [MonteVar]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteVarFile, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteVarFile(*args) - try: self.this.append(this) - except: self.this = this - this.own(0) - self.this.own(0) - - - __swig_destroy__ = _sim_services.delete_MonteVarFile - __del__ = lambda self: None - - def set_file_name(self, in_file_name): - return _sim_services.MonteVarFile_set_file_name(self, in_file_name) - - def set_column(self, in_column): - return _sim_services.MonteVarFile_set_column(self, in_column) - - def describe_variable(self): - return _sim_services.MonteVarFile_describe_variable(self) -MonteVarFile_swigregister = _sim_services.MonteVarFile_swigregister -MonteVarFile_swigregister(MonteVarFile) - -class MonteVarFixed(MonteVar): - __swig_setmethods__ = {} - for _s in [MonteVar]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarFixed, name, value) - __swig_getmethods__ = {} - for _s in [MonteVar]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteVarFixed, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MonteVarFixed(*args) - try: self.this.append(this) - except: self.this = this - this.own(0) - self.this.own(0) - - - - def set_value(self, in_value): - return _sim_services.MonteVarFixed_set_value(self, in_value) - - def describe_variable(self): - return _sim_services.MonteVarFixed_describe_variable(self) - __swig_destroy__ = _sim_services.delete_MonteVarFixed - __del__ = lambda self: None -MonteVarFixed_swigregister = _sim_services.MonteVarFixed_swigregister -MonteVarFixed_swigregister(MonteVarFixed) - -class StlRandomGenerator(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, StlRandomGenerator, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, StlRandomGenerator, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - TRICK_DEFAULT_ENGINE = _sim_services.StlRandomGenerator_TRICK_DEFAULT_ENGINE - GAUSSIAN = _sim_services.StlRandomGenerator_GAUSSIAN - FLAT = _sim_services.StlRandomGenerator_FLAT - POISSON = _sim_services.StlRandomGenerator_POISSON - __swig_destroy__ = _sim_services.delete_StlRandomGenerator - __del__ = lambda self: None - - def __call__(self): - return _sim_services.StlRandomGenerator___call__(self) - - def set_seed(self, in_seed): - return _sim_services.StlRandomGenerator_set_seed(self, in_seed) - - def set_param(self, a, b=0.0): - return _sim_services.StlRandomGenerator_set_param(self, a, b) - - def get_param_a(self): - return _sim_services.StlRandomGenerator_get_param_a(self) - - def get_param_b(self): - return _sim_services.StlRandomGenerator_get_param_b(self) -StlRandomGenerator_swigregister = _sim_services.StlRandomGenerator_swigregister -StlRandomGenerator_swigregister(StlRandomGenerator) - -class StlRandomGeneratorFactory(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, StlRandomGeneratorFactory, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, StlRandomGeneratorFactory, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined") - __repr__ = _swig_repr - if _newclass: - newGenerator = staticmethod(_sim_services.StlRandomGeneratorFactory_newGenerator) - else: - newGenerator = _sim_services.StlRandomGeneratorFactory_newGenerator -StlRandomGeneratorFactory_swigregister = _sim_services.StlRandomGeneratorFactory_swigregister -StlRandomGeneratorFactory_swigregister(StlRandomGeneratorFactory) - -def StlRandomGeneratorFactory_newGenerator(*args): - return _sim_services.StlRandomGeneratorFactory_newGenerator(*args) -StlRandomGeneratorFactory_newGenerator = _sim_services.StlRandomGeneratorFactory_newGenerator - -class MonteVarRandom(MonteVar): - __swig_setmethods__ = {} - for _s in [MonteVar]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MonteVarRandom, name, value) - __swig_getmethods__ = {} - for _s in [MonteVar]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MonteVarRandom, name) - __repr__ = _swig_repr - NO_ENGINE = _sim_services.MonteVarRandom_NO_ENGINE - TRICK_DEFAULT_ENGINE = _sim_services.MonteVarRandom_TRICK_DEFAULT_ENGINE - GAUSSIAN = _sim_services.MonteVarRandom_GAUSSIAN - FLAT = _sim_services.MonteVarRandom_FLAT - POISSON = _sim_services.MonteVarRandom_POISSON - - def __init__(self, *args): - this = _sim_services.new_MonteVarRandom(*args) - try: self.this.append(this) - except: self.this = this - this.own(0) - self.this.own(0) - - - __swig_destroy__ = _sim_services.delete_MonteVarRandom - __del__ = lambda self: None - - def set_seed(self, seed): - return _sim_services.MonteVarRandom_set_seed(self, seed) - - def set_sigma(self, sigma): - return _sim_services.MonteVarRandom_set_sigma(self, sigma) - - def set_sigma_range(self, sigma_range): - return _sim_services.MonteVarRandom_set_sigma_range(self, sigma_range) - - def set_mu(self, mu): - return _sim_services.MonteVarRandom_set_mu(self, mu) - - def set_min(self, min): - return _sim_services.MonteVarRandom_set_min(self, min) - - def set_max(self, max): - return _sim_services.MonteVarRandom_set_max(self, max) - - def set_min_is_relative(self, relativity): - return _sim_services.MonteVarRandom_set_min_is_relative(self, relativity) - - def set_max_is_relative(self, relativity): - return _sim_services.MonteVarRandom_set_max_is_relative(self, relativity) - - def set_uniform_generator(self, uniform): - return _sim_services.MonteVarRandom_set_uniform_generator(self, uniform) - - def get_absolute_min(self): - return _sim_services.MonteVarRandom_get_absolute_min(self) - - def get_absolute_max(self): - return _sim_services.MonteVarRandom_get_absolute_max(self) - - def get_random_distribution(self): - return _sim_services.MonteVarRandom_get_random_distribution(self) - - def describe_variable(self): - return _sim_services.MonteVarRandom_describe_variable(self) -MonteVarRandom_swigregister = _sim_services.MonteVarRandom_swigregister -MonteVarRandom_swigregister(MonteVarRandom) - -class Timer(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Timer, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Timer, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_Timer - __del__ = lambda self: None - - def enable(self): - return _sim_services.Timer_enable(self) - - def disable(self): - return _sim_services.Timer_disable(self) - - def get_enabled(self): - return _sim_services.Timer_get_enabled(self) - - def set_active(self, in_active): - return _sim_services.Timer_set_active(self, in_active) - - def init(self): - return _sim_services.Timer_init(self) - - def start(self, frame_time): - return _sim_services.Timer_start(self, frame_time) - - def reset(self, frame_time): - return _sim_services.Timer_reset(self, frame_time) - - def stop(self): - return _sim_services.Timer_stop(self) - - def pause(self): - return _sim_services.Timer_pause(self) - - def shutdown(self): - return _sim_services.Timer_shutdown(self) -Timer_swigregister = _sim_services.Timer_swigregister -Timer_swigregister(Timer) - -class RealtimeSync(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RealtimeSync, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RealtimeSync, name) - __repr__ = _swig_repr - __swig_setmethods__["enable_flag"] = _sim_services.RealtimeSync_enable_flag_set - __swig_getmethods__["enable_flag"] = _sim_services.RealtimeSync_enable_flag_get - if _newclass: - enable_flag = _swig_property(_sim_services.RealtimeSync_enable_flag_get, _sim_services.RealtimeSync_enable_flag_set) - __swig_setmethods__["disable_flag"] = _sim_services.RealtimeSync_disable_flag_set - __swig_getmethods__["disable_flag"] = _sim_services.RealtimeSync_disable_flag_get - if _newclass: - disable_flag = _swig_property(_sim_services.RealtimeSync_disable_flag_get, _sim_services.RealtimeSync_disable_flag_set) - __swig_setmethods__["active"] = _sim_services.RealtimeSync_active_set - __swig_getmethods__["active"] = _sim_services.RealtimeSync_active_get - if _newclass: - active = _swig_property(_sim_services.RealtimeSync_active_get, _sim_services.RealtimeSync_active_set) - __swig_setmethods__["freeze_frame"] = _sim_services.RealtimeSync_freeze_frame_set - __swig_getmethods__["freeze_frame"] = _sim_services.RealtimeSync_freeze_frame_get - if _newclass: - freeze_frame = _swig_property(_sim_services.RealtimeSync_freeze_frame_get, _sim_services.RealtimeSync_freeze_frame_set) - __swig_setmethods__["freeze_time_tics"] = _sim_services.RealtimeSync_freeze_time_tics_set - __swig_getmethods__["freeze_time_tics"] = _sim_services.RealtimeSync_freeze_time_tics_get - if _newclass: - freeze_time_tics = _swig_property(_sim_services.RealtimeSync_freeze_time_tics_get, _sim_services.RealtimeSync_freeze_time_tics_set) - __swig_setmethods__["frame_overrun_cnt"] = _sim_services.RealtimeSync_frame_overrun_cnt_set - __swig_getmethods__["frame_overrun_cnt"] = _sim_services.RealtimeSync_frame_overrun_cnt_get - if _newclass: - frame_overrun_cnt = _swig_property(_sim_services.RealtimeSync_frame_overrun_cnt_get, _sim_services.RealtimeSync_frame_overrun_cnt_set) - __swig_setmethods__["total_overrun"] = _sim_services.RealtimeSync_total_overrun_set - __swig_getmethods__["total_overrun"] = _sim_services.RealtimeSync_total_overrun_get - if _newclass: - total_overrun = _swig_property(_sim_services.RealtimeSync_total_overrun_get, _sim_services.RealtimeSync_total_overrun_set) - __swig_setmethods__["rt_max_overrun_cnt"] = _sim_services.RealtimeSync_rt_max_overrun_cnt_set - __swig_getmethods__["rt_max_overrun_cnt"] = _sim_services.RealtimeSync_rt_max_overrun_cnt_get - if _newclass: - rt_max_overrun_cnt = _swig_property(_sim_services.RealtimeSync_rt_max_overrun_cnt_get, _sim_services.RealtimeSync_rt_max_overrun_cnt_set) - __swig_setmethods__["rt_max_overrun_time"] = _sim_services.RealtimeSync_rt_max_overrun_time_set - __swig_getmethods__["rt_max_overrun_time"] = _sim_services.RealtimeSync_rt_max_overrun_time_get - if _newclass: - rt_max_overrun_time = _swig_property(_sim_services.RealtimeSync_rt_max_overrun_time_get, _sim_services.RealtimeSync_rt_max_overrun_time_set) - __swig_setmethods__["rt_max_overrun_time_tics"] = _sim_services.RealtimeSync_rt_max_overrun_time_tics_set - __swig_getmethods__["rt_max_overrun_time_tics"] = _sim_services.RealtimeSync_rt_max_overrun_time_tics_get - if _newclass: - rt_max_overrun_time_tics = _swig_property(_sim_services.RealtimeSync_rt_max_overrun_time_tics_get, _sim_services.RealtimeSync_rt_max_overrun_time_tics_set) - __swig_setmethods__["rt_overrun_freeze"] = _sim_services.RealtimeSync_rt_overrun_freeze_set - __swig_getmethods__["rt_overrun_freeze"] = _sim_services.RealtimeSync_rt_overrun_freeze_get - if _newclass: - rt_overrun_freeze = _swig_property(_sim_services.RealtimeSync_rt_overrun_freeze_get, _sim_services.RealtimeSync_rt_overrun_freeze_set) - __swig_setmethods__["frame_sched_time"] = _sim_services.RealtimeSync_frame_sched_time_set - __swig_getmethods__["frame_sched_time"] = _sim_services.RealtimeSync_frame_sched_time_get - if _newclass: - frame_sched_time = _swig_property(_sim_services.RealtimeSync_frame_sched_time_get, _sim_services.RealtimeSync_frame_sched_time_set) - __swig_setmethods__["frame_overrun_time"] = _sim_services.RealtimeSync_frame_overrun_time_set - __swig_getmethods__["frame_overrun_time"] = _sim_services.RealtimeSync_frame_overrun_time_get - if _newclass: - frame_overrun_time = _swig_property(_sim_services.RealtimeSync_frame_overrun_time_get, _sim_services.RealtimeSync_frame_overrun_time_set) - __swig_setmethods__["last_clock_time"] = _sim_services.RealtimeSync_last_clock_time_set - __swig_getmethods__["last_clock_time"] = _sim_services.RealtimeSync_last_clock_time_get - if _newclass: - last_clock_time = _swig_property(_sim_services.RealtimeSync_last_clock_time_get, _sim_services.RealtimeSync_last_clock_time_set) - __swig_setmethods__["tics_per_sec"] = _sim_services.RealtimeSync_tics_per_sec_set - __swig_getmethods__["tics_per_sec"] = _sim_services.RealtimeSync_tics_per_sec_get - if _newclass: - tics_per_sec = _swig_property(_sim_services.RealtimeSync_tics_per_sec_get, _sim_services.RealtimeSync_tics_per_sec_set) - __swig_setmethods__["align_sim_to_wall_clock"] = _sim_services.RealtimeSync_align_sim_to_wall_clock_set - __swig_getmethods__["align_sim_to_wall_clock"] = _sim_services.RealtimeSync_align_sim_to_wall_clock_get - if _newclass: - align_sim_to_wall_clock = _swig_property(_sim_services.RealtimeSync_align_sim_to_wall_clock_get, _sim_services.RealtimeSync_align_sim_to_wall_clock_set) - __swig_setmethods__["align_tic_mult"] = _sim_services.RealtimeSync_align_tic_mult_set - __swig_getmethods__["align_tic_mult"] = _sim_services.RealtimeSync_align_tic_mult_get - if _newclass: - align_tic_mult = _swig_property(_sim_services.RealtimeSync_align_tic_mult_get, _sim_services.RealtimeSync_align_tic_mult_set) - __swig_setmethods__["rt_clock"] = _sim_services.RealtimeSync_rt_clock_set - __swig_getmethods__["rt_clock"] = _sim_services.RealtimeSync_rt_clock_get - if _newclass: - rt_clock = _swig_property(_sim_services.RealtimeSync_rt_clock_get, _sim_services.RealtimeSync_rt_clock_set) - __swig_setmethods__["default_clock"] = _sim_services.RealtimeSync_default_clock_set - __swig_getmethods__["default_clock"] = _sim_services.RealtimeSync_default_clock_get - if _newclass: - default_clock = _swig_property(_sim_services.RealtimeSync_default_clock_get, _sim_services.RealtimeSync_default_clock_set) - __swig_setmethods__["sleep_timer"] = _sim_services.RealtimeSync_sleep_timer_set - __swig_getmethods__["sleep_timer"] = _sim_services.RealtimeSync_sleep_timer_get - if _newclass: - sleep_timer = _swig_property(_sim_services.RealtimeSync_sleep_timer_get, _sim_services.RealtimeSync_sleep_timer_set) - __swig_setmethods__["freeze_shutdown"] = _sim_services.RealtimeSync_freeze_shutdown_set - __swig_getmethods__["freeze_shutdown"] = _sim_services.RealtimeSync_freeze_shutdown_get - if _newclass: - freeze_shutdown = _swig_property(_sim_services.RealtimeSync_freeze_shutdown_get, _sim_services.RealtimeSync_freeze_shutdown_set) - __swig_setmethods__["sim_start_time"] = _sim_services.RealtimeSync_sim_start_time_set - __swig_getmethods__["sim_start_time"] = _sim_services.RealtimeSync_sim_start_time_get - if _newclass: - sim_start_time = _swig_property(_sim_services.RealtimeSync_sim_start_time_get, _sim_services.RealtimeSync_sim_start_time_set) - __swig_setmethods__["sim_end_init_time"] = _sim_services.RealtimeSync_sim_end_init_time_set - __swig_getmethods__["sim_end_init_time"] = _sim_services.RealtimeSync_sim_end_init_time_get - if _newclass: - sim_end_init_time = _swig_property(_sim_services.RealtimeSync_sim_end_init_time_get, _sim_services.RealtimeSync_sim_end_init_time_set) - __swig_setmethods__["sim_end_time"] = _sim_services.RealtimeSync_sim_end_time_set - __swig_getmethods__["sim_end_time"] = _sim_services.RealtimeSync_sim_end_time_get - if _newclass: - sim_end_time = _swig_property(_sim_services.RealtimeSync_sim_end_time_get, _sim_services.RealtimeSync_sim_end_time_set) - - def __init__(self, in_clock, in_timer=None): - this = _sim_services.new_RealtimeSync(in_clock, in_timer) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RealtimeSync - __del__ = lambda self: None - - def enable(self): - return _sim_services.RealtimeSync_enable(self) - - def disable(self): - return _sim_services.RealtimeSync_disable(self) - - def change_clock(self, in_clock): - return _sim_services.RealtimeSync_change_clock(self, in_clock) - - def clock_get_name(self): - return _sim_services.RealtimeSync_clock_get_name(self) - - def change_timer(self, in_sleep_timer): - return _sim_services.RealtimeSync_change_timer(self, in_sleep_timer) - - def set_rt_clock_ratio(self, in_clock_ratio): - return _sim_services.RealtimeSync_set_rt_clock_ratio(self, in_clock_ratio) - - def get_sim_start_time(self): - return _sim_services.RealtimeSync_get_sim_start_time(self) - - def get_sim_end_init_time(self): - return _sim_services.RealtimeSync_get_sim_end_init_time(self) - - def get_sim_end_time(self): - return _sim_services.RealtimeSync_get_sim_end_time(self) - - def initialize(self): - return _sim_services.RealtimeSync_initialize(self) - - def restart(self, ref_time): - return _sim_services.RealtimeSync_restart(self, ref_time) - - def start_realtime(self, in_frame_time, ref_time): - return _sim_services.RealtimeSync_start_realtime(self, in_frame_time, ref_time) - - def rt_monitor(self, sim_time_tics): - return _sim_services.RealtimeSync_rt_monitor(self, sim_time_tics) - - def freeze_init(self, in_freeze_frame): - return _sim_services.RealtimeSync_freeze_init(self, in_freeze_frame) - - def freeze_pause(self, in_freeze_frame): - return _sim_services.RealtimeSync_freeze_pause(self, in_freeze_frame) - - def unfreeze(self, sim_time_tics, software_frame): - return _sim_services.RealtimeSync_unfreeze(self, sim_time_tics, software_frame) - - def shutdown(self): - return _sim_services.RealtimeSync_shutdown(self) - - def start_sleep_timer(self): - return _sim_services.RealtimeSync_start_sleep_timer(self) - - def is_active(self): - return _sim_services.RealtimeSync_is_active(self) -RealtimeSync_swigregister = _sim_services.RealtimeSync_swigregister -RealtimeSync_swigregister(RealtimeSync) - - -def real_time_change_clock(in_clock): - return _sim_services.real_time_change_clock(in_clock) -real_time_change_clock = _sim_services.real_time_change_clock - -def real_time_change_timer(in_sleep_timer): - return _sim_services.real_time_change_timer(in_sleep_timer) -real_time_change_timer = _sim_services.real_time_change_timer - -def real_time_enable(): - return _sim_services.real_time_enable() -real_time_enable = _sim_services.real_time_enable - -def real_time_disable(): - return _sim_services.real_time_disable() -real_time_disable = _sim_services.real_time_disable - -def real_time_restart(ref_time): - return _sim_services.real_time_restart(ref_time) -real_time_restart = _sim_services.real_time_restart - -def is_real_time(): - return _sim_services.is_real_time() -is_real_time = _sim_services.is_real_time - -def real_time_clock_get_name(): - return _sim_services.real_time_clock_get_name() -real_time_clock_get_name = _sim_services.real_time_clock_get_name - -def real_time_set_rt_clock_ratio(in_clock_ratio): - return _sim_services.real_time_set_rt_clock_ratio(in_clock_ratio) -real_time_set_rt_clock_ratio = _sim_services.real_time_set_rt_clock_ratio - -def real_time_lock_memory(yes_no): - return _sim_services.real_time_lock_memory(yes_no) -real_time_lock_memory = _sim_services.real_time_lock_memory - -def exec_set_lock_memory(yes_no): - return _sim_services.exec_set_lock_memory(yes_no) -exec_set_lock_memory = _sim_services.exec_set_lock_memory - -def extract_bitfield_any(arg1, arg2, arg3, arg4): - return _sim_services.extract_bitfield_any(arg1, arg2, arg3, arg4) -extract_bitfield_any = _sim_services.extract_bitfield_any - -def extract_unsigned_bitfield_any(arg1, arg2, arg3, arg4): - return _sim_services.extract_unsigned_bitfield_any(arg1, arg2, arg3, arg4) -extract_unsigned_bitfield_any = _sim_services.extract_unsigned_bitfield_any - -def insert_bitfield_any(arg1, arg2, arg3, arg4, arg5): - return _sim_services.insert_bitfield_any(arg1, arg2, arg3, arg4, arg5) -insert_bitfield_any = _sim_services.insert_bitfield_any - -def addr_bitfield(A, B, field_count): - return _sim_services.addr_bitfield(A, B, field_count) -addr_bitfield = _sim_services.addr_bitfield -class RtiEventBase(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RtiEventBase, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RtiEventBase, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_RtiEventBase - __del__ = lambda self: None - - def do_assignment(self): - return _sim_services.RtiEventBase_do_assignment(self) - - def print_val(self): - return _sim_services.RtiEventBase_print_val(self) - - def print_rti(self): - return _sim_services.RtiEventBase_print_rti(self) - - def check_address(self): - return _sim_services.RtiEventBase_check_address(self) - __swig_setmethods__["ref"] = _sim_services.RtiEventBase_ref_set - __swig_getmethods__["ref"] = _sim_services.RtiEventBase_ref_get - if _newclass: - ref = _swig_property(_sim_services.RtiEventBase_ref_get, _sim_services.RtiEventBase_ref_set) -RtiEventBase_swigregister = _sim_services.RtiEventBase_swigregister -RtiEventBase_swigregister(RtiEventBase) - -class RtiList(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RtiList, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RtiList, name) - __repr__ = _swig_repr - - def execute(self, debug): - return _sim_services.RtiList_execute(self, debug) - - def print_list(self): - return _sim_services.RtiList_print_list(self) - __swig_setmethods__["event_list"] = _sim_services.RtiList_event_list_set - __swig_getmethods__["event_list"] = _sim_services.RtiList_event_list_get - if _newclass: - event_list = _swig_property(_sim_services.RtiList_event_list_get, _sim_services.RtiList_event_list_set) - - def __init__(self): - this = _sim_services.new_RtiList() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RtiList - __del__ = lambda self: None -RtiList_swigregister = _sim_services.RtiList_swigregister -RtiList_swigregister(RtiList) - -class RtiExec(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RtiExec, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RtiExec, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_RtiExec() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RtiExec - __del__ = lambda self: None - - def AddToFireList(self, rti_list): - return _sim_services.RtiExec_AddToFireList(self, rti_list) - - def Exec(self): - return _sim_services.RtiExec_Exec(self) - - def SetDebug(self, on_off): - return _sim_services.RtiExec_SetDebug(self, on_off) - - def SetFrameMultiple(self, mult): - return _sim_services.RtiExec_SetFrameMultiple(self, mult) - - def SetFrameOffset(self, offset): - return _sim_services.RtiExec_SetFrameOffset(self, offset) - __swig_setmethods__["frame_multiple"] = _sim_services.RtiExec_frame_multiple_set - __swig_getmethods__["frame_multiple"] = _sim_services.RtiExec_frame_multiple_get - if _newclass: - frame_multiple = _swig_property(_sim_services.RtiExec_frame_multiple_get, _sim_services.RtiExec_frame_multiple_set) - __swig_setmethods__["frame_offset"] = _sim_services.RtiExec_frame_offset_set - __swig_getmethods__["frame_offset"] = _sim_services.RtiExec_frame_offset_get - if _newclass: - frame_offset = _swig_property(_sim_services.RtiExec_frame_offset_get, _sim_services.RtiExec_frame_offset_set) -RtiExec_swigregister = _sim_services.RtiExec_swigregister -RtiExec_swigregister(RtiExec) - -class RtiStager(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, RtiStager, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, RtiStager, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_RtiStager() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_RtiStager - __del__ = lambda self: None - - def Add(self, *args): - return _sim_services.RtiStager_Add(self, *args) - - def Fire(self, thread_id=0): - return _sim_services.RtiStager_Fire(self, thread_id) - - def List(self): - return _sim_services.RtiStager_List(self) - - def SetDebug(self, on_off): - return _sim_services.RtiStager_SetDebug(self, on_off) - - def SetFrameMultiple(self, thread_id, mult): - return _sim_services.RtiStager_SetFrameMultiple(self, thread_id, mult) - - def SetFrameOffset(self, thread_id, offset): - return _sim_services.RtiStager_SetFrameOffset(self, thread_id, offset) - - def AddInjectorExecutor(self, arg2): - return _sim_services.RtiStager_AddInjectorExecutor(self, arg2) - - def GetRtiExecutor(self, thread_id): - return _sim_services.RtiStager_GetRtiExecutor(self, thread_id) -RtiStager_swigregister = _sim_services.RtiStager_swigregister -RtiStager_swigregister(RtiStager) - -class ITimer(Timer): - __swig_setmethods__ = {} - for _s in [Timer]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, ITimer, name, value) - __swig_getmethods__ = {} - for _s in [Timer]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, ITimer, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_ITimer() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_ITimer - __del__ = lambda self: None - - def semaphore_post(self): - return _sim_services.ITimer_semaphore_post(self) - - def init(self): - return _sim_services.ITimer_init(self) - - def start(self, frame_time): - return _sim_services.ITimer_start(self, frame_time) - - def reset(self, frame_time): - return _sim_services.ITimer_reset(self, frame_time) - - def stop(self): - return _sim_services.ITimer_stop(self) - - def pause(self): - return _sim_services.ITimer_pause(self) - - def shutdown(self): - return _sim_services.ITimer_shutdown(self) -ITimer_swigregister = _sim_services.ITimer_swigregister -ITimer_swigregister(ITimer) - - -def get_itimer(): - return _sim_services.get_itimer() -get_itimer = _sim_services.get_itimer - -def it_handler(sig): - return _sim_services.it_handler(sig) -it_handler = _sim_services.it_handler -class UCFn(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, UCFn, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, UCFn, name) - __repr__ = _swig_repr - __swig_setmethods__["C"] = _sim_services.UCFn_C_set - __swig_getmethods__["C"] = _sim_services.UCFn_C_get - if _newclass: - C = _swig_property(_sim_services.UCFn_C_get, _sim_services.UCFn_C_set) - __swig_setmethods__["t_name"] = _sim_services.UCFn_t_name_set - __swig_getmethods__["t_name"] = _sim_services.UCFn_t_name_get - if _newclass: - t_name = _swig_property(_sim_services.UCFn_t_name_get, _sim_services.UCFn_t_name_set) - __swig_setmethods__["f_name"] = _sim_services.UCFn_f_name_set - __swig_getmethods__["f_name"] = _sim_services.UCFn_f_name_get - if _newclass: - f_name = _swig_property(_sim_services.UCFn_f_name_get, _sim_services.UCFn_f_name_set) - - def __init__(self, t_name, f_name, C1, C0): - this = _sim_services.new_UCFn(t_name, f_name, C1, C0) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def eval(self, val): - return _sim_services.UCFn_eval(self, val) - __swig_destroy__ = _sim_services.delete_UCFn - __del__ = lambda self: None -UCFn_swigregister = _sim_services.UCFn_swigregister -UCFn_swigregister(UCFn) - -class Unit(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, Unit, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, Unit, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_Unit(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_Unit - __del__ = lambda self: None - - def setUnitName(self, units_spec): - return _sim_services.Unit_setUnitName(self, units_spec) - - def getUnitName(self): - return _sim_services.Unit_getUnitName(self) - - def Conversion_to(self, *args): - return _sim_services.Unit_Conversion_to(self, *args) - - def Convert_to(self, *args): - return _sim_services.Unit_Convert_to(self, *args) -Unit_swigregister = _sim_services.Unit_swigregister -Unit_swigregister(Unit) - -class TestCase(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TestCase, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TestCase, name) - __repr__ = _swig_repr - __swig_setmethods__["name"] = _sim_services.TestCase_name_set - __swig_getmethods__["name"] = _sim_services.TestCase_name_get - if _newclass: - name = _swig_property(_sim_services.TestCase_name_get, _sim_services.TestCase_name_set) - __swig_setmethods__["status"] = _sim_services.TestCase_status_set - __swig_getmethods__["status"] = _sim_services.TestCase_status_get - if _newclass: - status = _swig_property(_sim_services.TestCase_status_get, _sim_services.TestCase_status_set) - __swig_setmethods__["parent"] = _sim_services.TestCase_parent_set - __swig_getmethods__["parent"] = _sim_services.TestCase_parent_get - if _newclass: - parent = _swig_property(_sim_services.TestCase_parent_get, _sim_services.TestCase_parent_set) - __swig_setmethods__["elapsed_time"] = _sim_services.TestCase_elapsed_time_set - __swig_getmethods__["elapsed_time"] = _sim_services.TestCase_elapsed_time_get - if _newclass: - elapsed_time = _swig_property(_sim_services.TestCase_elapsed_time_get, _sim_services.TestCase_elapsed_time_set) - __swig_setmethods__["failure_string"] = _sim_services.TestCase_failure_string_set - __swig_getmethods__["failure_string"] = _sim_services.TestCase_failure_string_get - if _newclass: - failure_string = _swig_property(_sim_services.TestCase_failure_string_get, _sim_services.TestCase_failure_string_set) - - def __init__(self, test_case_name, in_failure_string): - this = _sim_services.new_TestCase(test_case_name, in_failure_string) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TestCase - __del__ = lambda self: None -TestCase_swigregister = _sim_services.TestCase_swigregister -TestCase_swigregister(TestCase) - -class TestSuite(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TestSuite, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TestSuite, name) - __repr__ = _swig_repr - __swig_setmethods__["num_failures"] = _sim_services.TestSuite_num_failures_set - __swig_getmethods__["num_failures"] = _sim_services.TestSuite_num_failures_get - if _newclass: - num_failures = _swig_property(_sim_services.TestSuite_num_failures_get, _sim_services.TestSuite_num_failures_set) - __swig_setmethods__["test_results"] = _sim_services.TestSuite_test_results_set - __swig_getmethods__["test_results"] = _sim_services.TestSuite_test_results_get - if _newclass: - test_results = _swig_property(_sim_services.TestSuite_test_results_get, _sim_services.TestSuite_test_results_set) - - def __init__(self): - this = _sim_services.new_TestSuite() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def add_test_results(self, *args): - return _sim_services.TestSuite_add_test_results(self, *args) - - def add_test_requirements(self, test_case, par_num): - return _sim_services.TestSuite_add_test_requirements(self, test_case, par_num) - - def delete_test_results(self): - return _sim_services.TestSuite_delete_test_results(self) - __swig_destroy__ = _sim_services.delete_TestSuite - __del__ = lambda self: None -TestSuite_swigregister = _sim_services.TestSuite_swigregister -TestSuite_swigregister(TestSuite) - -class UnitTest(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, UnitTest, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, UnitTest, name) - __repr__ = _swig_repr - __swig_setmethods__["enabled"] = _sim_services.UnitTest_enabled_set - __swig_getmethods__["enabled"] = _sim_services.UnitTest_enabled_get - if _newclass: - enabled = _swig_property(_sim_services.UnitTest_enabled_get, _sim_services.UnitTest_enabled_set) - __swig_setmethods__["exit_code_enabled"] = _sim_services.UnitTest_exit_code_enabled_set - __swig_getmethods__["exit_code_enabled"] = _sim_services.UnitTest_exit_code_enabled_get - if _newclass: - exit_code_enabled = _swig_property(_sim_services.UnitTest_exit_code_enabled_get, _sim_services.UnitTest_exit_code_enabled_set) - __swig_setmethods__["name"] = _sim_services.UnitTest_name_set - __swig_getmethods__["name"] = _sim_services.UnitTest_name_get - if _newclass: - name = _swig_property(_sim_services.UnitTest_name_get, _sim_services.UnitTest_name_set) - __swig_setmethods__["file_name"] = _sim_services.UnitTest_file_name_set - __swig_getmethods__["file_name"] = _sim_services.UnitTest_file_name_get - if _newclass: - file_name = _swig_property(_sim_services.UnitTest_file_name_get, _sim_services.UnitTest_file_name_set) - __swig_setmethods__["test_suites"] = _sim_services.UnitTest_test_suites_set - __swig_getmethods__["test_suites"] = _sim_services.UnitTest_test_suites_get - if _newclass: - test_suites = _swig_property(_sim_services.UnitTest_test_suites_get, _sim_services.UnitTest_test_suites_set) - - def __init__(self): - this = _sim_services.new_UnitTest() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_UnitTest - __del__ = lambda self: None - - def enable(self): - return _sim_services.UnitTest_enable(self) - - def set_exit_code_enabled(self, in_enable): - return _sim_services.UnitTest_set_exit_code_enabled(self, in_enable) - - def add_test_results(self, *args): - return _sim_services.UnitTest_add_test_results(self, *args) - - def add_test_requirements(self, in_test_suite_name, in_test_case, par_num): - return _sim_services.UnitTest_add_test_requirements(self, in_test_suite_name, in_test_case, par_num) - - def set_test_name(self, in_name): - return _sim_services.UnitTest_set_test_name(self, in_name) - - def set_file_name(self, in_name): - return _sim_services.UnitTest_set_file_name(self, in_name) - - def write_output(self): - return _sim_services.UnitTest_write_output(self) -UnitTest_swigregister = _sim_services.UnitTest_swigregister -UnitTest_swigregister(UnitTest) - - -def trick_test_enable(): - return _sim_services.trick_test_enable() -trick_test_enable = _sim_services.trick_test_enable - -def trick_test_set_file_name(in_file_name): - return _sim_services.trick_test_set_file_name(in_file_name) -trick_test_set_file_name = _sim_services.trick_test_set_file_name - -def trick_test_set_test_name(in_test_name): - return _sim_services.trick_test_set_test_name(in_test_name) -trick_test_set_test_name = _sim_services.trick_test_set_test_name - -def trick_test_add_parent(in_test_suite_name, in_test_case, par_num): - return _sim_services.trick_test_add_parent(in_test_suite_name, in_test_case, par_num) -trick_test_add_parent = _sim_services.trick_test_add_parent - -def add_test_result(in_test_suite_name, in_test_case, in_failure_string): - return _sim_services.add_test_result(in_test_suite_name, in_test_case, in_failure_string) -add_test_result = _sim_services.add_test_result - -def call_write_output(): - return _sim_services.call_write_output() -call_write_output = _sim_services.call_write_output -VS_COPY_ASYNC = _sim_services.VS_COPY_ASYNC -VS_COPY_SCHEDULED = _sim_services.VS_COPY_SCHEDULED -VS_COPY_TOP_OF_FRAME = _sim_services.VS_COPY_TOP_OF_FRAME -VS_WRITE_ASYNC = _sim_services.VS_WRITE_ASYNC -VS_WRITE_WHEN_COPIED = _sim_services.VS_WRITE_WHEN_COPIED -MAX_ARRAY_LENGTH = _sim_services.MAX_ARRAY_LENGTH -class VariableReference(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VariableReference, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VariableReference, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_VariableReference(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VariableReference - __del__ = lambda self: None - - def getName(self): - return _sim_services.VariableReference_getName(self) - - def getType(self): - return _sim_services.VariableReference_getType(self) - - def getBaseUnits(self): - return _sim_services.VariableReference_getBaseUnits(self) - - def setRequestedUnits(self, new_units): - return _sim_services.VariableReference_setRequestedUnits(self, new_units) - - def stageValue(self, validate_address=False): - return _sim_services.VariableReference_stageValue(self, validate_address) - - def prepareForWrite(self): - return _sim_services.VariableReference_prepareForWrite(self) - - def isStaged(self): - return _sim_services.VariableReference_isStaged(self) - - def isWriteReady(self): - return _sim_services.VariableReference_isWriteReady(self) - - def getSizeAscii(self): - return _sim_services.VariableReference_getSizeAscii(self) - - def getSizeBinary(self): - return _sim_services.VariableReference_getSizeBinary(self) - - def writeValueAscii(self, out): - return _sim_services.VariableReference_writeValueAscii(self, out) - - def writeValueBinary(self, out, byteswap=False): - return _sim_services.VariableReference_writeValueBinary(self, out, byteswap) - - def writeNameBinary(self, out, byteswap=False): - return _sim_services.VariableReference_writeNameBinary(self, out, byteswap) - - def writeNameLengthBinary(self, out, byteswap=False): - return _sim_services.VariableReference_writeNameLengthBinary(self, out, byteswap) - - def writeSizeBinary(self, out, byteswap=False): - return _sim_services.VariableReference_writeSizeBinary(self, out, byteswap) - - def writeTypeBinary(self, out, byteswap=False): - return _sim_services.VariableReference_writeTypeBinary(self, out, byteswap) - - def validate(self): - return _sim_services.VariableReference_validate(self) - - def tagAsInvalid(self): - return _sim_services.VariableReference_tagAsInvalid(self) - if _newclass: - byteswap_var = staticmethod(_sim_services.VariableReference_byteswap_var) - else: - byteswap_var = _sim_services.VariableReference_byteswap_var -VariableReference_swigregister = _sim_services.VariableReference_swigregister -VariableReference_swigregister(VariableReference) - -def VariableReference_byteswap_var(out, arg3, ref): - return _sim_services.VariableReference_byteswap_var(out, arg3, ref) -VariableReference_byteswap_var = _sim_services.VariableReference_byteswap_var - -class ClientConnection(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, ClientConnection, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, ClientConnection, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_ClientConnection - __del__ = lambda self: None - MAX_CMD_LEN = _sim_services.ClientConnection_MAX_CMD_LEN - TCP = _sim_services.ClientConnection_TCP - UDP = _sim_services.ClientConnection_UDP - MCAST = _sim_services.ClientConnection_MCAST - WS = _sim_services.ClientConnection_WS - - def start(self): - return _sim_services.ClientConnection_start(self) - - def write(self, *args): - return _sim_services.ClientConnection_write(self, *args) - - def read(self, *args): - return _sim_services.ClientConnection_read(self, *args) - - def setBlockMode(self, blocking): - return _sim_services.ClientConnection_setBlockMode(self, blocking) - - def disconnect(self): - return _sim_services.ClientConnection_disconnect(self) - - def isInitialized(self): - return _sim_services.ClientConnection_isInitialized(self) - - def getClientTag(self): - return _sim_services.ClientConnection_getClientTag(self) - - def setClientTag(self, tag): - return _sim_services.ClientConnection_setClientTag(self, tag) - - def restart(self): - return _sim_services.ClientConnection_restart(self) - - def getClientHostname(self): - return _sim_services.ClientConnection_getClientHostname(self) - - def getClientPort(self): - return _sim_services.ClientConnection_getClientPort(self) -ClientConnection_swigregister = _sim_services.ClientConnection_swigregister -ClientConnection_swigregister(ClientConnection) - -VS_IP_ERROR = _sim_services.VS_IP_ERROR -VS_VAR_LIST = _sim_services.VS_VAR_LIST -VS_VAR_EXISTS = _sim_services.VS_VAR_EXISTS -VS_SIE_RESOURCE = _sim_services.VS_SIE_RESOURCE -VS_LIST_SIZE = _sim_services.VS_LIST_SIZE -VS_STDIO = _sim_services.VS_STDIO -VS_SEND_ONCE = _sim_services.VS_SEND_ONCE -VS_MIN_CODE = _sim_services.VS_MIN_CODE -VS_MAX_CODE = _sim_services.VS_MAX_CODE -class VariableServerSession(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerSession, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VariableServerSession, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_VariableServerSession() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VariableServerSession - __del__ = lambda self: None - - def set_connection(self, connection): - return _sim_services.VariableServerSession_set_connection(self, connection) - - def handle_message(self): - return _sim_services.VariableServerSession_handle_message(self) - - def get_pause(self): - return _sim_services.VariableServerSession_get_pause(self) - - def set_pause(self, on_off): - return _sim_services.VariableServerSession_set_pause(self, on_off) - - def get_exit_cmd(self): - return _sim_services.VariableServerSession_get_exit_cmd(self) - - def set_exit_cmd(self): - return _sim_services.VariableServerSession_set_exit_cmd(self) - - def get_send_stdio(self): - return _sim_services.VariableServerSession_get_send_stdio(self) - - def set_send_stdio(self, on_off): - return _sim_services.VariableServerSession_set_send_stdio(self, on_off) - - def copy_and_write_freeze(self, curr_frame): - return _sim_services.VariableServerSession_copy_and_write_freeze(self, curr_frame) - - def copy_and_write_freeze_scheduled(self, curr_tics): - return _sim_services.VariableServerSession_copy_and_write_freeze_scheduled(self, curr_tics) - - def copy_and_write_scheduled(self, curr_tics): - return _sim_services.VariableServerSession_copy_and_write_scheduled(self, curr_tics) - - def copy_and_write_top(self, curr_frame): - return _sim_services.VariableServerSession_copy_and_write_top(self, curr_frame) - - def copy_and_write_async(self): - return _sim_services.VariableServerSession_copy_and_write_async(self) - - def copy_sim_data(self, *args): - return _sim_services.VariableServerSession_copy_sim_data(self, *args) - - def write_data(self, *args): - return _sim_services.VariableServerSession_write_data(self, *args) - - def write_stdio(self, stream, text): - return _sim_services.VariableServerSession_write_stdio(self, stream, text) - - def disconnect_references(self): - return _sim_services.VariableServerSession_disconnect_references(self) - - def get_next_tics(self): - return _sim_services.VariableServerSession_get_next_tics(self) - - def get_freeze_next_tics(self): - return _sim_services.VariableServerSession_get_freeze_next_tics(self) - - def freeze_init(self): - return _sim_services.VariableServerSession_freeze_init(self) - - def get_update_rate(self): - return _sim_services.VariableServerSession_get_update_rate(self) - - def pause_copy(self): - return _sim_services.VariableServerSession_pause_copy(self) - - def unpause_copy(self): - return _sim_services.VariableServerSession_unpause_copy(self) - - def get_write_mode(self): - return _sim_services.VariableServerSession_get_write_mode(self) - - def get_copy_mode(self): - return _sim_services.VariableServerSession_get_copy_mode(self) - - def var_add(self, *args): - return _sim_services.VariableServerSession_var_add(self, *args) - - def var_remove(self, in_name): - return _sim_services.VariableServerSession_var_remove(self, in_name) - - def var_units(self, var_name, units_name): - return _sim_services.VariableServerSession_var_units(self, var_name, units_name) - - def var_exists(self, in_name): - return _sim_services.VariableServerSession_var_exists(self, in_name) - - def var_send_once(self, in_name_list, num_vars): - return _sim_services.VariableServerSession_var_send_once(self, in_name_list, num_vars) - - def var_send(self): - return _sim_services.VariableServerSession_var_send(self) - - def var_clear(self): - return _sim_services.VariableServerSession_var_clear(self) - - def var_validate_address(self, on_off): - return _sim_services.VariableServerSession_var_validate_address(self, on_off) - - def var_debug(self, level): - return _sim_services.VariableServerSession_var_debug(self, level) - - def var_ascii(self): - return _sim_services.VariableServerSession_var_ascii(self) - - def var_binary(self): - return _sim_services.VariableServerSession_var_binary(self) - - def var_binary_nonames(self): - return _sim_services.VariableServerSession_var_binary_nonames(self) - - def var_set_copy_mode(self, mode): - return _sim_services.VariableServerSession_var_set_copy_mode(self, mode) - - def var_set_write_mode(self, mode): - return _sim_services.VariableServerSession_var_set_write_mode(self, mode) - - def var_sync(self, on_off): - return _sim_services.VariableServerSession_var_sync(self, on_off) - - def var_set_frame_multiple(self, mult): - return _sim_services.VariableServerSession_var_set_frame_multiple(self, mult) - - def var_set_frame_offset(self, offset): - return _sim_services.VariableServerSession_var_set_frame_offset(self, offset) - - def var_set_freeze_frame_multiple(self, mult): - return _sim_services.VariableServerSession_var_set_freeze_frame_multiple(self, mult) - - def var_set_freeze_frame_offset(self, offset): - return _sim_services.VariableServerSession_var_set_freeze_frame_offset(self, offset) - - def var_byteswap(self, on_off): - return _sim_services.VariableServerSession_var_byteswap(self, on_off) - - def set_log(self, on_off): - return _sim_services.VariableServerSession_set_log(self, on_off) - - def set_session_log(self, on_off): - return _sim_services.VariableServerSession_set_session_log(self, on_off) - - def set_info_message(self, on): - return _sim_services.VariableServerSession_set_info_message(self, on) - - def send_list_size(self): - return _sim_services.VariableServerSession_send_list_size(self) - - def send_sie_resource(self): - return _sim_services.VariableServerSession_send_sie_resource(self) - - def send_sie_class(self): - return _sim_services.VariableServerSession_send_sie_class(self) - - def send_sie_enum(self): - return _sim_services.VariableServerSession_send_sie_enum(self) - - def send_sie_top_level_objects(self): - return _sim_services.VariableServerSession_send_sie_top_level_objects(self) - - def send_file(self, file_name): - return _sim_services.VariableServerSession_send_file(self, file_name) - - def var_cycle(self, in_cycle): - return _sim_services.VariableServerSession_var_cycle(self, in_cycle) - - def var_exit(self): - return _sim_services.VariableServerSession_var_exit(self) -VariableServerSession_swigregister = _sim_services.VariableServerSession_swigregister -VariableServerSession_swigregister(VariableServerSession) - -class SystemInterface(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, SystemInterface, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, SystemInterface, name) - __repr__ = _swig_repr - - def socket(self, domain, type, protocol): - return _sim_services.SystemInterface_socket(self, domain, type, protocol) - - def setsockopt(self, socket, level, option_name, option_value, option_len): - return _sim_services.SystemInterface_setsockopt(self, socket, level, option_name, option_value, option_len) - - def bind(self, socket, address, address_len): - return _sim_services.SystemInterface_bind(self, socket, address, address_len) - - def getsockname(self, socket, address, address_len): - return _sim_services.SystemInterface_getsockname(self, socket, address, address_len) - - def listen(self, socket, backlog): - return _sim_services.SystemInterface_listen(self, socket, backlog) - - def select(self, nfds, readfds, writefds, errorfds, timeout): - return _sim_services.SystemInterface_select(self, nfds, readfds, writefds, errorfds, timeout) - - def close(self, fildes): - return _sim_services.SystemInterface_close(self, fildes) - - def getaddrinfo(self, hostname, servname, hints, res): - return _sim_services.SystemInterface_getaddrinfo(self, hostname, servname, hints, res) - - def fcntl(self, fildes, cmd, arg): - return _sim_services.SystemInterface_fcntl(self, fildes, cmd, arg) - - def shutdown(self, socket, how): - return _sim_services.SystemInterface_shutdown(self, socket, how) - - def accept(self, socket, address, address_len): - return _sim_services.SystemInterface_accept(self, socket, address, address_len) - - def send(self, socket, buffer, length, flags): - return _sim_services.SystemInterface_send(self, socket, buffer, length, flags) - - def sendto(self, socket, buffer, length, flags, dest_addr, dest_len): - return _sim_services.SystemInterface_sendto(self, socket, buffer, length, flags, dest_addr, dest_len) - - def recv(self, socket, buffer, length, flags): - return _sim_services.SystemInterface_recv(self, socket, buffer, length, flags) - - def recvfrom(self, socket, buffer, length, flags, address, address_len): - return _sim_services.SystemInterface_recvfrom(self, socket, buffer, length, flags, address, address_len) - - def inet_addr(self, cp): - return _sim_services.SystemInterface_inet_addr(self, cp) - - def __init__(self): - this = _sim_services.new_SystemInterface() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_SystemInterface - __del__ = lambda self: None -SystemInterface_swigregister = _sim_services.SystemInterface_swigregister -SystemInterface_swigregister(SystemInterface) - -class TCPConnection(ClientConnection): - __swig_setmethods__ = {} - for _s in [ClientConnection]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, TCPConnection, name, value) - __swig_getmethods__ = {} - for _s in [ClientConnection]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, TCPConnection, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_TCPConnection(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def start(self): - return _sim_services.TCPConnection_start(self) - - def write(self, *args): - return _sim_services.TCPConnection_write(self, *args) - - def read(self, *args): - return _sim_services.TCPConnection_read(self, *args) - - def disconnect(self): - return _sim_services.TCPConnection_disconnect(self) - - def isInitialized(self): - return _sim_services.TCPConnection_isInitialized(self) - - def setBlockMode(self, blocking): - return _sim_services.TCPConnection_setBlockMode(self, blocking) - - def restart(self): - return _sim_services.TCPConnection_restart(self) - - def getClientTag(self): - return _sim_services.TCPConnection_getClientTag(self) - - def setClientTag(self, tag): - return _sim_services.TCPConnection_setClientTag(self, tag) - - def getClientHostname(self): - return _sim_services.TCPConnection_getClientHostname(self) - - def getClientPort(self): - return _sim_services.TCPConnection_getClientPort(self) - __swig_destroy__ = _sim_services.delete_TCPConnection - __del__ = lambda self: None -TCPConnection_swigregister = _sim_services.TCPConnection_swigregister -TCPConnection_swigregister(TCPConnection) - -LISTENER_ERROR = _sim_services.LISTENER_ERROR -class TCPClientListener(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, TCPClientListener, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, TCPClientListener, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_TCPClientListener(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_TCPClientListener - __del__ = lambda self: None - - def initialize(self, *args): - return _sim_services.TCPClientListener_initialize(self, *args) - - def setBlockMode(self, blocking): - return _sim_services.TCPClientListener_setBlockMode(self, blocking) - - def checkForNewConnections(self): - return _sim_services.TCPClientListener_checkForNewConnections(self) - - def setUpNewConnection(self): - return _sim_services.TCPClientListener_setUpNewConnection(self) - - def disconnect(self): - return _sim_services.TCPClientListener_disconnect(self) - - def checkSocket(self): - return _sim_services.TCPClientListener_checkSocket(self) - - def validateSourceAddress(self, source_address): - return _sim_services.TCPClientListener_validateSourceAddress(self, source_address) - - def isInitialized(self): - return _sim_services.TCPClientListener_isInitialized(self) - - def restart(self): - return _sim_services.TCPClientListener_restart(self) - - def getHostname(self): - return _sim_services.TCPClientListener_getHostname(self) - - def getPort(self): - return _sim_services.TCPClientListener_getPort(self) -TCPClientListener_swigregister = _sim_services.TCPClientListener_swigregister -TCPClientListener_swigregister(TCPClientListener) - -CONNECTION_PENDING = _sim_services.CONNECTION_PENDING -CONNECTION_SUCCESS = _sim_services.CONNECTION_SUCCESS -CONNECTION_FAIL = _sim_services.CONNECTION_FAIL -class VariableServerSessionThread(SysThread): - __swig_setmethods__ = {} - for _s in [SysThread]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerSessionThread, name, value) - __swig_getmethods__ = {} - for _s in [SysThread]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, VariableServerSessionThread, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_VariableServerSessionThread(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VariableServerSessionThread - __del__ = lambda self: None - if _newclass: - set_vs_ptr = staticmethod(_sim_services.VariableServerSessionThread_set_vs_ptr) - else: - set_vs_ptr = _sim_services.VariableServerSessionThread_set_vs_ptr - - def set_client_tag(self, tag): - return _sim_services.VariableServerSessionThread_set_client_tag(self, tag) - - def set_connection(self, in_connection): - return _sim_services.VariableServerSessionThread_set_connection(self, in_connection) - - def wait_for_accept(self): - return _sim_services.VariableServerSessionThread_wait_for_accept(self) - - def thread_body(self): - return _sim_services.VariableServerSessionThread_thread_body(self) - - def get_vs(self): - return _sim_services.VariableServerSessionThread_get_vs(self) - - def preload_checkpoint(self): - return _sim_services.VariableServerSessionThread_preload_checkpoint(self) - - def restart(self): - return _sim_services.VariableServerSessionThread_restart(self) - - def cleanup(self): - return _sim_services.VariableServerSessionThread_cleanup(self) -VariableServerSessionThread_swigregister = _sim_services.VariableServerSessionThread_swigregister -VariableServerSessionThread_swigregister(VariableServerSessionThread) - -def VariableServerSessionThread_set_vs_ptr(in_vs): - return _sim_services.VariableServerSessionThread_set_vs_ptr(in_vs) -VariableServerSessionThread_set_vs_ptr = _sim_services.VariableServerSessionThread_set_vs_ptr - - -def __lshift__(*args): - return _sim_services.__lshift__(*args) -__lshift__ = _sim_services.__lshift__ -class UDPConnection(ClientConnection): - __swig_setmethods__ = {} - for _s in [ClientConnection]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, UDPConnection, name, value) - __swig_getmethods__ = {} - for _s in [ClientConnection]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, UDPConnection, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_UDPConnection(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - - def start(self): - return _sim_services.UDPConnection_start(self) - - def write(self, *args): - return _sim_services.UDPConnection_write(self, *args) - - def read(self, *args): - return _sim_services.UDPConnection_read(self, *args) - - def disconnect(self): - return _sim_services.UDPConnection_disconnect(self) - - def isInitialized(self): - return _sim_services.UDPConnection_isInitialized(self) - - def setBlockMode(self, block_mode): - return _sim_services.UDPConnection_setBlockMode(self, block_mode) - - def restart(self): - return _sim_services.UDPConnection_restart(self) - - def getClientTag(self): - return _sim_services.UDPConnection_getClientTag(self) - - def setClientTag(self, tag): - return _sim_services.UDPConnection_setClientTag(self, tag) - - def initialize(self, hostname, port): - return _sim_services.UDPConnection_initialize(self, hostname, port) - - def getPort(self): - return _sim_services.UDPConnection_getPort(self) - - def getHostname(self): - return _sim_services.UDPConnection_getHostname(self) - - def getClientHostname(self): - return _sim_services.UDPConnection_getClientHostname(self) - - def getClientPort(self): - return _sim_services.UDPConnection_getClientPort(self) - __swig_destroy__ = _sim_services.delete_UDPConnection - __del__ = lambda self: None -UDPConnection_swigregister = _sim_services.UDPConnection_swigregister -UDPConnection_swigregister(UDPConnection) - -class MulticastGroup(UDPConnection): - __swig_setmethods__ = {} - for _s in [UDPConnection]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, MulticastGroup, name, value) - __swig_getmethods__ = {} - for _s in [UDPConnection]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, MulticastGroup, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_MulticastGroup(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_MulticastGroup - __del__ = lambda self: None - - def initialize_with_receiving(self, local_addr, mcast_addr, port): - return _sim_services.MulticastGroup_initialize_with_receiving(self, local_addr, mcast_addr, port) - - def initialize(self): - return _sim_services.MulticastGroup_initialize(self) - - def broadcast(self, message): - return _sim_services.MulticastGroup_broadcast(self, message) - - def addAddress(self, addr, port): - return _sim_services.MulticastGroup_addAddress(self, addr, port) - - def write(self, *args): - return _sim_services.MulticastGroup_write(self, *args) - - def read(self, *args): - return _sim_services.MulticastGroup_read(self, *args) - - def disconnect(self): - return _sim_services.MulticastGroup_disconnect(self) - - def isInitialized(self): - return _sim_services.MulticastGroup_isInitialized(self) - - def restart(self): - return _sim_services.MulticastGroup_restart(self) - - def getClientHostname(self): - return _sim_services.MulticastGroup_getClientHostname(self) - - def getClientPort(self): - return _sim_services.MulticastGroup_getClientPort(self) -MulticastGroup_swigregister = _sim_services.MulticastGroup_swigregister -MulticastGroup_swigregister(MulticastGroup) - -class VariableServerListenThread(SysThread): - __swig_setmethods__ = {} - for _s in [SysThread]: - __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) - __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServerListenThread, name, value) - __swig_getmethods__ = {} - for _s in [SysThread]: - __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) - __getattr__ = lambda self, name: _swig_getattr(self, VariableServerListenThread, name) - __repr__ = _swig_repr - - def __init__(self, *args): - this = _sim_services.new_VariableServerListenThread(*args) - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VariableServerListenThread - __del__ = lambda self: None - - def get_hostname(self): - return _sim_services.VariableServerListenThread_get_hostname(self) - - def get_port(self): - return _sim_services.VariableServerListenThread_get_port(self) - - def set_port(self, in_port): - return _sim_services.VariableServerListenThread_set_port(self, in_port) - - def get_user_tag(self): - return _sim_services.VariableServerListenThread_get_user_tag(self) - - def get_user_tag_ref(self): - return _sim_services.VariableServerListenThread_get_user_tag_ref(self) - - def set_user_tag(self, in_tag): - return _sim_services.VariableServerListenThread_set_user_tag(self, in_tag) - - def set_source_address(self, address): - return _sim_services.VariableServerListenThread_set_source_address(self, address) - - def get_source_address(self): - return _sim_services.VariableServerListenThread_get_source_address(self) - - def get_broadcast(self): - return _sim_services.VariableServerListenThread_get_broadcast(self) - - def set_broadcast(self, in_broadcast): - return _sim_services.VariableServerListenThread_set_broadcast(self, in_broadcast) - - def init_listen_device(self): - return _sim_services.VariableServerListenThread_init_listen_device(self) - - def check_and_move_listen_device(self): - return _sim_services.VariableServerListenThread_check_and_move_listen_device(self) - - def thread_body(self): - return _sim_services.VariableServerListenThread_thread_body(self) - - def restart(self): - return _sim_services.VariableServerListenThread_restart(self) - - def pause_listening(self): - return _sim_services.VariableServerListenThread_pause_listening(self) - - def restart_listening(self): - return _sim_services.VariableServerListenThread_restart_listening(self) - - def set_multicast_group(self, group): - return _sim_services.VariableServerListenThread_set_multicast_group(self, group) - - def dump(self, *args): - return _sim_services.VariableServerListenThread_dump(self, *args) -VariableServerListenThread_swigregister = _sim_services.VariableServerListenThread_swigregister -VariableServerListenThread_swigregister(VariableServerListenThread) - -class VariableServer(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, VariableServer, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, VariableServer, name) - __repr__ = _swig_repr - - def __init__(self): - this = _sim_services.new_VariableServer() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_VariableServer - __del__ = lambda self: None - - def default_data(self): - return _sim_services.VariableServer_default_data(self) - - def init(self): - return _sim_services.VariableServer_init(self) - - def restart(self): - return _sim_services.VariableServer_restart(self) - - def freeze_init(self): - return _sim_services.VariableServer_freeze_init(self) - - def shutdown(self): - return _sim_services.VariableServer_shutdown(self) - - def get_next_sync_call_time(self): - return _sim_services.VariableServer_get_next_sync_call_time(self) - - def get_next_freeze_call_time(self): - return _sim_services.VariableServer_get_next_freeze_call_time(self) - - def copy_and_write_top(self): - return _sim_services.VariableServer_copy_and_write_top(self) - - def copy_and_write_scheduled(self): - return _sim_services.VariableServer_copy_and_write_scheduled(self) - - def copy_and_write_freeze_scheduled(self): - return _sim_services.VariableServer_copy_and_write_freeze_scheduled(self) - - def copy_and_write_freeze(self): - return _sim_services.VariableServer_copy_and_write_freeze(self) - - def add_vst(self, thread_id, in_vst): - return _sim_services.VariableServer_add_vst(self, thread_id, in_vst) - - def add_session(self, thread_id, in_session): - return _sim_services.VariableServer_add_session(self, thread_id, in_session) - - def get_vst(self, thread_id): - return _sim_services.VariableServer_get_vst(self, thread_id) - - def get_session(self, thread_id): - return _sim_services.VariableServer_get_session(self, thread_id) - - def delete_vst(self, thread_id): - return _sim_services.VariableServer_delete_vst(self, thread_id) - - def delete_session(self, thread_id): - return _sim_services.VariableServer_delete_session(self, thread_id) - - def get_hostname(self): - return _sim_services.VariableServer_get_hostname(self) - - def get_listen_thread(self): - return _sim_services.VariableServer_get_listen_thread(self) - - def set_enabled(self, on_off): - return _sim_services.VariableServer_set_enabled(self, on_off) - - def get_enabled(self): - return _sim_services.VariableServer_get_enabled(self) - - def get_info_msg(self): - return _sim_services.VariableServer_get_info_msg(self) - - def get_log(self): - return _sim_services.VariableServer_get_log(self) - - def get_session_log(self): - return _sim_services.VariableServer_get_session_log(self) - - def set_var_server_info_msg_on(self): - return _sim_services.VariableServer_set_var_server_info_msg_on(self) - - def set_var_server_info_msg_off(self): - return _sim_services.VariableServer_set_var_server_info_msg_off(self) - - def set_var_server_log_on(self): - return _sim_services.VariableServer_set_var_server_log_on(self) - - def set_var_server_log_off(self): - return _sim_services.VariableServer_set_var_server_log_off(self) - - def set_var_server_session_log_on(self): - return _sim_services.VariableServer_set_var_server_session_log_on(self) - - def set_var_server_session_log_off(self): - return _sim_services.VariableServer_set_var_server_session_log_off(self) - - def create_tcp_socket(self, source_address, port): - return _sim_services.VariableServer_create_tcp_socket(self, source_address, port) - - def create_udp_socket(self, source_address, port): - return _sim_services.VariableServer_create_udp_socket(self, source_address, port) - - def create_multicast_socket(self, mcast_address, source_address, port): - return _sim_services.VariableServer_create_multicast_socket(self, mcast_address, source_address, port) - - def suspendPreCheckpointReload(self): - return _sim_services.VariableServer_suspendPreCheckpointReload(self) - - def resumePostCheckpointReload(self): - return _sim_services.VariableServer_resumePostCheckpointReload(self) - - def set_copy_data_job(self, arg2): - return _sim_services.VariableServer_set_copy_data_job(self, arg2) - - def set_copy_and_write_freeze_job(self, arg2): - return _sim_services.VariableServer_set_copy_and_write_freeze_job(self, arg2) -VariableServer_swigregister = _sim_services.VariableServer_swigregister -VariableServer_swigregister(VariableServer) - - -def var_server_get_var_server(): - return _sim_services.var_server_get_var_server() -var_server_get_var_server = _sim_services.var_server_get_var_server - -def var_add(*args): - return _sim_services.var_add(*args) -var_add = _sim_services.var_add - -def var_remove(in_name): - return _sim_services.var_remove(in_name) -var_remove = _sim_services.var_remove - -def var_units(var_name, units_name): - return _sim_services.var_units(var_name, units_name) -var_units = _sim_services.var_units - -def var_exists(in_name): - return _sim_services.var_exists(in_name) -var_exists = _sim_services.var_exists - -def var_send_once(*args): - return _sim_services.var_send_once(*args) -var_send_once = _sim_services.var_send_once - -def var_send(): - return _sim_services.var_send() -var_send = _sim_services.var_send - -def var_clear(): - return _sim_services.var_clear() -var_clear = _sim_services.var_clear - -def var_cycle(in_rate): - return _sim_services.var_cycle(in_rate) -var_cycle = _sim_services.var_cycle - -def var_pause(): - return _sim_services.var_pause() -var_pause = _sim_services.var_pause - -def var_unpause(): - return _sim_services.var_unpause() -var_unpause = _sim_services.var_unpause - -def var_exit(): - return _sim_services.var_exit() -var_exit = _sim_services.var_exit - -def var_write_stdio(stream, text): - return _sim_services.var_write_stdio(stream, text) -var_write_stdio = _sim_services.var_write_stdio - -def var_set_client_tag(text): - return _sim_services.var_set_client_tag(text) -var_set_client_tag = _sim_services.var_set_client_tag - -def var_debug(level): - return _sim_services.var_debug(level) -var_debug = _sim_services.var_debug - -def var_ascii(): - return _sim_services.var_ascii() -var_ascii = _sim_services.var_ascii - -def var_binary(): - return _sim_services.var_binary() -var_binary = _sim_services.var_binary - -def var_binary_nonames(): - return _sim_services.var_binary_nonames() -var_binary_nonames = _sim_services.var_binary_nonames - -def var_validate_address(on_off): - return _sim_services.var_validate_address(on_off) -var_validate_address = _sim_services.var_validate_address - -def var_set_copy_mode(mode): - return _sim_services.var_set_copy_mode(mode) -var_set_copy_mode = _sim_services.var_set_copy_mode - -def var_set_write_mode(mode): - return _sim_services.var_set_write_mode(mode) -var_set_write_mode = _sim_services.var_set_write_mode - -def var_set_send_stdio(mode): - return _sim_services.var_set_send_stdio(mode) -var_set_send_stdio = _sim_services.var_set_send_stdio - -def var_sync(mode): - return _sim_services.var_sync(mode) -var_sync = _sim_services.var_sync - -def var_set_frame_multiple(mult): - return _sim_services.var_set_frame_multiple(mult) -var_set_frame_multiple = _sim_services.var_set_frame_multiple - -def var_set_frame_offset(offset): - return _sim_services.var_set_frame_offset(offset) -var_set_frame_offset = _sim_services.var_set_frame_offset - -def var_set_freeze_frame_multiple(mult): - return _sim_services.var_set_freeze_frame_multiple(mult) -var_set_freeze_frame_multiple = _sim_services.var_set_freeze_frame_multiple - -def var_set_freeze_frame_offset(offset): - return _sim_services.var_set_freeze_frame_offset(offset) -var_set_freeze_frame_offset = _sim_services.var_set_freeze_frame_offset - -def var_byteswap(on_off): - return _sim_services.var_byteswap(on_off) -var_byteswap = _sim_services.var_byteswap - -def var_send_list_size(): - return _sim_services.var_send_list_size() -var_send_list_size = _sim_services.var_send_list_size - -def send_sie_resource(): - return _sim_services.send_sie_resource() -send_sie_resource = _sim_services.send_sie_resource - -def send_sie_class(): - return _sim_services.send_sie_class() -send_sie_class = _sim_services.send_sie_class - -def send_sie_enum(): - return _sim_services.send_sie_enum() -send_sie_enum = _sim_services.send_sie_enum - -def send_sie_top_level_objects(): - return _sim_services.send_sie_top_level_objects() -send_sie_top_level_objects = _sim_services.send_sie_top_level_objects - -def send_file(file_name): - return _sim_services.send_file(file_name) -send_file = _sim_services.send_file - -def var_set(*args): - return _sim_services.var_set(*args) -var_set = _sim_services.var_set - -def var_server_log_on(): - return _sim_services.var_server_log_on() -var_server_log_on = _sim_services.var_server_log_on - -def var_server_log_off(): - return _sim_services.var_server_log_off() -var_server_log_off = _sim_services.var_server_log_off - -def var_server_list_connections(): - return _sim_services.var_server_list_connections() -var_server_list_connections = _sim_services.var_server_list_connections - -def var_server_get_hostname(): - return _sim_services.var_server_get_hostname() -var_server_get_hostname = _sim_services.var_server_get_hostname - -def var_server_get_port(): - return _sim_services.var_server_get_port() -var_server_get_port = _sim_services.var_server_get_port - -def var_server_set_port(port): - return _sim_services.var_server_set_port(port) -var_server_set_port = _sim_services.var_server_set_port - -def var_server_set_source_address(address): - return _sim_services.var_server_set_source_address(address) -var_server_set_source_address = _sim_services.var_server_set_source_address - -def var_server_get_user_tag(): - return _sim_services.var_server_get_user_tag() -var_server_get_user_tag = _sim_services.var_server_get_user_tag - -def var_server_set_user_tag(tag): - return _sim_services.var_server_set_user_tag(tag) -var_server_set_user_tag = _sim_services.var_server_set_user_tag - -def var_server_get_enabled(): - return _sim_services.var_server_get_enabled() -var_server_get_enabled = _sim_services.var_server_get_enabled - -def var_server_set_enabled(on_off): - return _sim_services.var_server_set_enabled(on_off) -var_server_set_enabled = _sim_services.var_server_set_enabled - -def var_server_create_tcp_socket(address, port): - return _sim_services.var_server_create_tcp_socket(address, port) -var_server_create_tcp_socket = _sim_services.var_server_create_tcp_socket - -def var_server_create_udp_socket(address, port): - return _sim_services.var_server_create_udp_socket(address, port) -var_server_create_udp_socket = _sim_services.var_server_create_udp_socket - -def var_server_create_multicast_socket(mcast_address, address, port): - return _sim_services.var_server_create_multicast_socket(mcast_address, address, port) -var_server_create_multicast_socket = _sim_services.var_server_create_multicast_socket - -def vval_char(V): - return _sim_services.vval_char(V) -vval_char = _sim_services.vval_char - -def vval_short(V): - return _sim_services.vval_short(V) -vval_short = _sim_services.vval_short - -def vval_int(V): - return _sim_services.vval_int(V) -vval_int = _sim_services.vval_int - -def vval_long(V): - return _sim_services.vval_long(V) -vval_long = _sim_services.vval_long - -def vval_longlong(V): - return _sim_services.vval_longlong(V) -vval_longlong = _sim_services.vval_longlong - -def vval_float(V): - return _sim_services.vval_float(V) -vval_float = _sim_services.vval_float - -def vval_double(V): - return _sim_services.vval_double(V) -vval_double = _sim_services.vval_double - -def vval_string(V): - return _sim_services.vval_string(V) -vval_string = _sim_services.vval_string - -def vval_filep(V): - return _sim_services.vval_filep(V) -vval_filep = _sim_services.vval_filep - -def vval_voidp(V): - return _sim_services.vval_voidp(V) -vval_voidp = _sim_services.vval_voidp - -def delete_v_tree(v_tree): - return _sim_services.delete_v_tree(v_tree) -delete_v_tree = _sim_services.delete_v_tree -Off = _sim_services.Off -On = _sim_services.On -No = _sim_services.No -Yes = _sim_services.Yes -Disconnect = _sim_services.Disconnect -Connect = _sim_services.Connect -Inactive = _sim_services.Inactive -Active = _sim_services.Active -Stop = _sim_services.Stop -Go = _sim_services.Go -Low = _sim_services.Low -High = _sim_services.High -Disable = _sim_services.Disable -Enable = _sim_services.Enable -TRUE = _sim_services.TRUE -FALSE = _sim_services.FALSE -Open = _sim_services.Open -Closed = _sim_services.Closed -OFF = _sim_services.OFF -ON = _sim_services.ON -NO = _sim_services.NO -YES = _sim_services.YES -INACTIVE = _sim_services.INACTIVE -ACTIVE = _sim_services.ACTIVE -BACKWARD = _sim_services.BACKWARD -FORWARD = _sim_services.FORWARD -BAD = _sim_services.BAD -GOOD = _sim_services.GOOD -class UdUnits(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, UdUnits, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, UdUnits, name) - __repr__ = _swig_repr - if _newclass: - get_u_system = staticmethod(_sim_services.UdUnits_get_u_system) - else: - get_u_system = _sim_services.UdUnits_get_u_system - - def read_default_xml(self): - return _sim_services.UdUnits_read_default_xml(self) - - def read_user_xml(self, arg2): - return _sim_services.UdUnits_read_user_xml(self, arg2) - - def __init__(self): - this = _sim_services.new_UdUnits() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _sim_services.delete_UdUnits - __del__ = lambda self: None -UdUnits_swigregister = _sim_services.UdUnits_swigregister -UdUnits_swigregister(UdUnits) - -def UdUnits_get_u_system(): - return _sim_services.UdUnits_get_u_system() -UdUnits_get_u_system = _sim_services.UdUnits_get_u_system - -class IntegratorConstructorFactory(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegratorConstructorFactory, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, IntegratorConstructorFactory, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined") - __repr__ = _swig_repr - if _newclass: - create = staticmethod(_sim_services.IntegratorConstructorFactory_create) - else: - create = _sim_services.IntegratorConstructorFactory_create -IntegratorConstructorFactory_swigregister = _sim_services.IntegratorConstructorFactory_swigregister -IntegratorConstructorFactory_swigregister(IntegratorConstructorFactory) - -def IntegratorConstructorFactory_create(type): - return _sim_services.IntegratorConstructorFactory_create(type) -IntegratorConstructorFactory_create = _sim_services.IntegratorConstructorFactory_create - -class IntegrableObject(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, IntegrableObject, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, IntegrableObject, name) - - def __init__(self, *args, **kwargs): - raise AttributeError("No constructor defined - class is abstract") - __repr__ = _swig_repr - __swig_destroy__ = _sim_services.delete_IntegrableObject - __del__ = lambda self: None - - def create_integrators(self, generator, controls, time_if): - return _sim_services.IntegrableObject_create_integrators(self, generator, controls, time_if) - - def destroy_integrators(self): - return _sim_services.IntegrableObject_destroy_integrators(self) - - def reset_integrators(self): - return _sim_services.IntegrableObject_reset_integrators(self) - - def integrate(self, dyn_dt, target_stage): - return _sim_services.IntegrableObject_integrate(self, dyn_dt, target_stage) - - def set_integration_group(self, integ_group_in): - return _sim_services.IntegrableObject_set_integration_group(self, integ_group_in) - - def clear_integration_group(self): - return _sim_services.IntegrableObject_clear_integration_group(self) - - def get_integration_group(self): - return _sim_services.IntegrableObject_get_integration_group(self) -IntegrableObject_swigregister = _sim_services.IntegrableObject_swigregister -IntegrableObject_swigregister(IntegrableObject) - - -import os -import linecache -import re - -curr_dir = os.getcwd() -exclude_dir = os.getcwd() + "/trick" - -def traceit(frame, event, arg): - if event == "line": - lineno = frame.f_lineno - filename = frame.f_code.co_filename - if ( not filename.startswith(exclude_dir) and not filename.startswith("/usr") and not filename.startswith("/opt") and not filename.startswith("<") and not filename.startswith(".trick/") ): - if (filename.endswith(".pyc") or - filename.endswith(".pyo")): - filename = filename[:-1] - line = linecache.getline(filename, lineno) - print (filename,":",lineno,": ",line.rstrip()) - return traceit - -# This file is compatible with both classic and new-style classes. - - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py deleted file mode 100644 index 8ef4370ba..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_double.py +++ /dev/null @@ -1,238 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.12 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. - -from sys import version_info as _swig_python_version_info -if _swig_python_version_info >= (2, 7, 0): - def swig_import_helper(): - import importlib - pkg = __name__.rpartition('.')[0] - mname = '.'.join((pkg, '_swig_double')).lstrip('.') - try: - return importlib.import_module(mname) - except ImportError: - return importlib.import_module('_swig_double') - _swig_double = swig_import_helper() - del swig_import_helper -elif _swig_python_version_info >= (2, 6, 0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_swig_double', [dirname(__file__)]) - except ImportError: - import _swig_double - return _swig_double - try: - _mod = imp.load_module('_swig_double', fp, pathname, description) - finally: - if fp is not None: - fp.close() - return _mod - _swig_double = swig_import_helper() - del swig_import_helper -else: - import _swig_double -del _swig_python_version_info - -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. - -try: - import builtins as __builtin__ -except ImportError: - import __builtin__ - -def _swig_setattr_nondynamic(self, class_type, name, value, static=1): - if (name == "thisown"): - return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name, None) - if method: - return method(self, value) - if (not static): - if _newclass: - object.__setattr__(self, name, value) - else: - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - - -def _swig_setattr(self, class_type, name, value): - return _swig_setattr_nondynamic(self, class_type, name, value, 0) - - -def _swig_getattr(self, class_type, name): - if (name == "thisown"): - return self.this.own() - method = class_type.__swig_getmethods__.get(name, None) - if method: - return method(self) - raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) - - -def _swig_repr(self): - try: - strthis = "proxy of " + self.this.__repr__() - except __builtin__.Exception: - strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except __builtin__.Exception: - class _object: - pass - _newclass = 0 - -class swig_double(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, swig_double, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, swig_double, name) - __swig_setmethods__["units"] = _swig_double.swig_double_units_set - __swig_getmethods__["units"] = _swig_double.swig_double_units_get - if _newclass: - units = _swig_property(_swig_double.swig_double_units_get, _swig_double.swig_double_units_set) - - def __str__(self): - return _swig_double.swig_double___str__(self) - - def __repr__(self): - return _swig_double.swig_double___repr__(self) - - def __add__(self, obj1): - return _swig_double.swig_double___add__(self, obj1) - - def __sub__(self, obj1): - return _swig_double.swig_double___sub__(self, obj1) - - def __mul__(self, obj1): - return _swig_double.swig_double___mul__(self, obj1) - - def __div__(self, obj1): - return _swig_double.swig_double___div__(self, obj1) - - def __truediv__(self, obj1): - return _swig_double.swig_double___truediv__(self, obj1) - - def __floordiv__(self, obj1): - return _swig_double.swig_double___floordiv__(self, obj1) - - def __mod__(self, obj1): - return _swig_double.swig_double___mod__(self, obj1) - - def __pow__(self, obj1): - return _swig_double.swig_double___pow__(self, obj1) - - def __radd__(self, obj1): - return _swig_double.swig_double___radd__(self, obj1) - - def __rsub__(self, obj1): - return _swig_double.swig_double___rsub__(self, obj1) - - def __rmul__(self, obj1): - return _swig_double.swig_double___rmul__(self, obj1) - - def __rdiv__(self, obj1): - return _swig_double.swig_double___rdiv__(self, obj1) - - def __rtruediv__(self, obj1): - return _swig_double.swig_double___rtruediv__(self, obj1) - - def __rfloordiv__(self, obj1): - return _swig_double.swig_double___rfloordiv__(self, obj1) - - def __rmod__(self, obj1): - return _swig_double.swig_double___rmod__(self, obj1) - - def __rpow__(self, obj1): - return _swig_double.swig_double___rpow__(self, obj1) - - def __iadd__(self, obj1): - return _swig_double.swig_double___iadd__(self, obj1) - - def __isub__(self, obj1): - return _swig_double.swig_double___isub__(self, obj1) - - def __imul__(self, obj1): - return _swig_double.swig_double___imul__(self, obj1) - - def __idiv__(self, obj1): - return _swig_double.swig_double___idiv__(self, obj1) - - def __itruediv__(self, obj1): - return _swig_double.swig_double___itruediv__(self, obj1) - - def __ifloordiv__(self, obj1): - return _swig_double.swig_double___ifloordiv__(self, obj1) - - def __imod__(self, obj1): - return _swig_double.swig_double___imod__(self, obj1) - - def __ipow__(self, obj1): - return _swig_double.swig_double___ipow__(self, obj1) - - def __lt__(self, obj1): - return _swig_double.swig_double___lt__(self, obj1) - - def __le__(self, obj1): - return _swig_double.swig_double___le__(self, obj1) - - def __eq__(self, obj1): - return _swig_double.swig_double___eq__(self, obj1) - - def __ne__(self, obj1): - return _swig_double.swig_double___ne__(self, obj1) - - def __gt__(self, obj1): - return _swig_double.swig_double___gt__(self, obj1) - - def __ge__(self, obj1): - return _swig_double.swig_double___ge__(self, obj1) - - def __neg__(self): - return _swig_double.swig_double___neg__(self) - - def __pos__(self): - return _swig_double.swig_double___pos__(self) - - def __abs__(self): - return _swig_double.swig_double___abs__(self) - - def __int__(self): - return _swig_double.swig_double___int__(self) - - def __long__(self): - return _swig_double.swig_double___long__(self) - - def __float__(self): - return _swig_double.swig_double___float__(self) - - def __len__(self): - return _swig_double.swig_double___len__(self) - - def __init__(self): - this = _swig_double.new_swig_double() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _swig_double.delete_swig_double - __del__ = lambda self: None -swig_double_swigregister = _swig_double.swig_double_swigregister -swig_double_swigregister(swig_double) - -# This file is compatible with both classic and new-style classes. - - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py deleted file mode 100644 index ae70cf10e..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_int.py +++ /dev/null @@ -1,301 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.12 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. - -from sys import version_info as _swig_python_version_info -if _swig_python_version_info >= (2, 7, 0): - def swig_import_helper(): - import importlib - pkg = __name__.rpartition('.')[0] - mname = '.'.join((pkg, '_swig_int')).lstrip('.') - try: - return importlib.import_module(mname) - except ImportError: - return importlib.import_module('_swig_int') - _swig_int = swig_import_helper() - del swig_import_helper -elif _swig_python_version_info >= (2, 6, 0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_swig_int', [dirname(__file__)]) - except ImportError: - import _swig_int - return _swig_int - try: - _mod = imp.load_module('_swig_int', fp, pathname, description) - finally: - if fp is not None: - fp.close() - return _mod - _swig_int = swig_import_helper() - del swig_import_helper -else: - import _swig_int -del _swig_python_version_info - -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. - -try: - import builtins as __builtin__ -except ImportError: - import __builtin__ - -def _swig_setattr_nondynamic(self, class_type, name, value, static=1): - if (name == "thisown"): - return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name, None) - if method: - return method(self, value) - if (not static): - if _newclass: - object.__setattr__(self, name, value) - else: - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - - -def _swig_setattr(self, class_type, name, value): - return _swig_setattr_nondynamic(self, class_type, name, value, 0) - - -def _swig_getattr(self, class_type, name): - if (name == "thisown"): - return self.this.own() - method = class_type.__swig_getmethods__.get(name, None) - if method: - return method(self) - raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) - - -def _swig_repr(self): - try: - strthis = "proxy of " + self.this.__repr__() - except __builtin__.Exception: - strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except __builtin__.Exception: - class _object: - pass - _newclass = 0 - -class swig_int(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, swig_int, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, swig_int, name) - __swig_setmethods__["units"] = _swig_int.swig_int_units_set - __swig_getmethods__["units"] = _swig_int.swig_int_units_get - if _newclass: - units = _swig_property(_swig_int.swig_int_units_get, _swig_int.swig_int_units_set) - - def __str__(self): - return _swig_int.swig_int___str__(self) - - def __repr__(self): - return _swig_int.swig_int___repr__(self) - - def __add__(self, obj1): - return _swig_int.swig_int___add__(self, obj1) - - def __sub__(self, obj1): - return _swig_int.swig_int___sub__(self, obj1) - - def __mul__(self, obj1): - return _swig_int.swig_int___mul__(self, obj1) - - def __div__(self, obj1): - return _swig_int.swig_int___div__(self, obj1) - - def __truediv__(self, obj1): - return _swig_int.swig_int___truediv__(self, obj1) - - def __floordiv__(self, obj1): - return _swig_int.swig_int___floordiv__(self, obj1) - - def __mod__(self, obj1): - return _swig_int.swig_int___mod__(self, obj1) - - def __pow__(self, obj1): - return _swig_int.swig_int___pow__(self, obj1) - - def __lshift__(self, obj1): - return _swig_int.swig_int___lshift__(self, obj1) - - def __rshift__(self, obj1): - return _swig_int.swig_int___rshift__(self, obj1) - - def __and__(self, obj1): - return _swig_int.swig_int___and__(self, obj1) - - def __xor__(self, obj1): - return _swig_int.swig_int___xor__(self, obj1) - - def __or__(self, obj1): - return _swig_int.swig_int___or__(self, obj1) - - def __radd__(self, obj1): - return _swig_int.swig_int___radd__(self, obj1) - - def __rsub__(self, obj1): - return _swig_int.swig_int___rsub__(self, obj1) - - def __rmul__(self, obj1): - return _swig_int.swig_int___rmul__(self, obj1) - - def __rdiv__(self, obj1): - return _swig_int.swig_int___rdiv__(self, obj1) - - def __rtruediv__(self, obj1): - return _swig_int.swig_int___rtruediv__(self, obj1) - - def __rfloordiv__(self, obj1): - return _swig_int.swig_int___rfloordiv__(self, obj1) - - def __rmod__(self, obj1): - return _swig_int.swig_int___rmod__(self, obj1) - - def __rpow__(self, obj1): - return _swig_int.swig_int___rpow__(self, obj1) - - def __rlshift__(self, obj1): - return _swig_int.swig_int___rlshift__(self, obj1) - - def __rrshift__(self, obj1): - return _swig_int.swig_int___rrshift__(self, obj1) - - def __rand__(self, obj1): - return _swig_int.swig_int___rand__(self, obj1) - - def __rxor__(self, obj1): - return _swig_int.swig_int___rxor__(self, obj1) - - def __ror__(self, obj1): - return _swig_int.swig_int___ror__(self, obj1) - - def __iadd__(self, obj1): - return _swig_int.swig_int___iadd__(self, obj1) - - def __isub__(self, obj1): - return _swig_int.swig_int___isub__(self, obj1) - - def __imul__(self, obj1): - return _swig_int.swig_int___imul__(self, obj1) - - def __idiv__(self, obj1): - return _swig_int.swig_int___idiv__(self, obj1) - - def __itruediv__(self, obj1): - return _swig_int.swig_int___itruediv__(self, obj1) - - def __ifloordiv__(self, obj1): - return _swig_int.swig_int___ifloordiv__(self, obj1) - - def __imod__(self, obj1): - return _swig_int.swig_int___imod__(self, obj1) - - def __ipow__(self, obj1): - return _swig_int.swig_int___ipow__(self, obj1) - - def __ilshift__(self, obj1): - return _swig_int.swig_int___ilshift__(self, obj1) - - def __irshift__(self, obj1): - return _swig_int.swig_int___irshift__(self, obj1) - - def __iand__(self, obj1): - return _swig_int.swig_int___iand__(self, obj1) - - def __ixor__(self, obj1): - return _swig_int.swig_int___ixor__(self, obj1) - - def __ior__(self, obj1): - return _swig_int.swig_int___ior__(self, obj1) - - def __lt__(self, obj1): - return _swig_int.swig_int___lt__(self, obj1) - - def __le__(self, obj1): - return _swig_int.swig_int___le__(self, obj1) - - def __eq__(self, obj1): - return _swig_int.swig_int___eq__(self, obj1) - - def __ne__(self, obj1): - return _swig_int.swig_int___ne__(self, obj1) - - def __gt__(self, obj1): - return _swig_int.swig_int___gt__(self, obj1) - - def __ge__(self, obj1): - return _swig_int.swig_int___ge__(self, obj1) - - def __neg__(self): - return _swig_int.swig_int___neg__(self) - - def __pos__(self): - return _swig_int.swig_int___pos__(self) - - def __abs__(self): - return _swig_int.swig_int___abs__(self) - - def __invert__(self): - return _swig_int.swig_int___invert__(self) - - def __nonzero__(self): - return _swig_int.swig_int___nonzero__(self) - - def __int__(self): - return _swig_int.swig_int___int__(self) - - def __long__(self): - return _swig_int.swig_int___long__(self) - - def __float__(self): - return _swig_int.swig_int___float__(self) - - def __oct__(self): - return _swig_int.swig_int___oct__(self) - - def __hex__(self): - return _swig_int.swig_int___hex__(self) - - def __len__(self): - return _swig_int.swig_int___len__(self) - - def __index__(self): - return _swig_int.swig_int___index__(self) - - def __bool__(self): - return _swig_int.swig_int___bool__(self) - - def __init__(self): - this = _swig_int.new_swig_int() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _swig_int.delete_swig_int - __del__ = lambda self: None -swig_int_swigregister = _swig_int.swig_int_swigregister -swig_int_swigregister(swig_int) - -# This file is compatible with both classic and new-style classes. - - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py b/trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py deleted file mode 100644 index 7919a9798..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/swig_ref.py +++ /dev/null @@ -1,132 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.12 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. - -from sys import version_info as _swig_python_version_info -if _swig_python_version_info >= (2, 7, 0): - def swig_import_helper(): - import importlib - pkg = __name__.rpartition('.')[0] - mname = '.'.join((pkg, '_swig_ref')).lstrip('.') - try: - return importlib.import_module(mname) - except ImportError: - return importlib.import_module('_swig_ref') - _swig_ref = swig_import_helper() - del swig_import_helper -elif _swig_python_version_info >= (2, 6, 0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_swig_ref', [dirname(__file__)]) - except ImportError: - import _swig_ref - return _swig_ref - try: - _mod = imp.load_module('_swig_ref', fp, pathname, description) - finally: - if fp is not None: - fp.close() - return _mod - _swig_ref = swig_import_helper() - del swig_import_helper -else: - import _swig_ref -del _swig_python_version_info - -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. - -try: - import builtins as __builtin__ -except ImportError: - import __builtin__ - -def _swig_setattr_nondynamic(self, class_type, name, value, static=1): - if (name == "thisown"): - return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name, None) - if method: - return method(self, value) - if (not static): - if _newclass: - object.__setattr__(self, name, value) - else: - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - - -def _swig_setattr(self, class_type, name, value): - return _swig_setattr_nondynamic(self, class_type, name, value, 0) - - -def _swig_getattr(self, class_type, name): - if (name == "thisown"): - return self.this.own() - method = class_type.__swig_getmethods__.get(name, None) - if method: - return method(self) - raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) - - -def _swig_repr(self): - try: - strthis = "proxy of " + self.this.__repr__() - except __builtin__.Exception: - strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except __builtin__.Exception: - class _object: - pass - _newclass = 0 - -class swig_ref(_object): - __swig_setmethods__ = {} - __setattr__ = lambda self, name, value: _swig_setattr(self, swig_ref, name, value) - __swig_getmethods__ = {} - __getattr__ = lambda self, name: _swig_getattr(self, swig_ref, name) - - def __getitem__(self, index): - return _swig_ref.swig_ref___getitem__(self, index) - - def __setitem__(self, index, obj1): - return _swig_ref.swig_ref___setitem__(self, index, obj1) - - def __str__(self): - return _swig_ref.swig_ref___str__(self) - - def __repr__(self): - return _swig_ref.swig_ref___repr__(self) - - def __len__(self): - return _swig_ref.swig_ref___len__(self) - - def __init__(self): - this = _swig_ref.new_swig_ref() - try: - self.this.append(this) - except __builtin__.Exception: - self.this = this - __swig_destroy__ = _swig_ref.delete_swig_ref - __del__ = lambda self: None -swig_ref_swigregister = _swig_ref.swig_ref_swigregister -swig_ref_swigregister(swig_ref) - -# This file is compatible with both classic and new-style classes. - - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/top.py b/trick_sims/SIM_singlerigidbody/sims/.trick/top.py deleted file mode 100644 index eb1529280..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/top.py +++ /dev/null @@ -1,109 +0,0 @@ -# This file was automatically generated by SWIG (http://www.swig.org). -# Version 3.0.12 -# -# Do not make changes to this file unless you know what you are doing--modify -# the SWIG interface file instead. - -from sys import version_info as _swig_python_version_info -if _swig_python_version_info >= (2, 7, 0): - def swig_import_helper(): - import importlib - pkg = __name__.rpartition('.')[0] - mname = '.'.join((pkg, '_top')).lstrip('.') - try: - return importlib.import_module(mname) - except ImportError: - return importlib.import_module('_top') - _top = swig_import_helper() - del swig_import_helper -elif _swig_python_version_info >= (2, 6, 0): - def swig_import_helper(): - from os.path import dirname - import imp - fp = None - try: - fp, pathname, description = imp.find_module('_top', [dirname(__file__)]) - except ImportError: - import _top - return _top - try: - _mod = imp.load_module('_top', fp, pathname, description) - finally: - if fp is not None: - fp.close() - return _mod - _top = swig_import_helper() - del swig_import_helper -else: - import _top -del _swig_python_version_info - -try: - _swig_property = property -except NameError: - pass # Python < 2.2 doesn't have 'property'. - -try: - import builtins as __builtin__ -except ImportError: - import __builtin__ - -def _swig_setattr_nondynamic(self, class_type, name, value, static=1): - if (name == "thisown"): - return self.this.own(value) - if (name == "this"): - if type(value).__name__ == 'SwigPyObject': - self.__dict__[name] = value - return - method = class_type.__swig_setmethods__.get(name, None) - if method: - return method(self, value) - if (not static): - if _newclass: - object.__setattr__(self, name, value) - else: - self.__dict__[name] = value - else: - raise AttributeError("You cannot add attributes to %s" % self) - - -def _swig_setattr(self, class_type, name, value): - return _swig_setattr_nondynamic(self, class_type, name, value, 0) - - -def _swig_getattr(self, class_type, name): - if (name == "thisown"): - return self.this.own() - method = class_type.__swig_getmethods__.get(name, None) - if method: - return method(self) - raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name)) - - -def _swig_repr(self): - try: - strthis = "proxy of " + self.this.__repr__() - except __builtin__.Exception: - strthis = "" - return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) - -try: - _object = object - _newclass = 1 -except __builtin__.Exception: - class _object: - pass - _newclass = 0 - -import m2ddd17f9284f93dc40b8a127bd142ae5 -import sim_services -import me18dda184e7a3a5300b5efa2b558f756 -# This file is compatible with both classic and new-style classes. - -cvar = _top.cvar -trick_sys = cvar.trick_sys -trick_message = cvar.trick_message -trick_vs = cvar.trick_vs -trick_data_record = cvar.trick_data_record -trick_frame_log = cvar.trick_frame_log - diff --git a/trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py b/trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py deleted file mode 100644 index 64c304c75..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/.trick/unit_test.py +++ /dev/null @@ -1,72 +0,0 @@ - -import math -import trick - -def TRICK_EXPECT_TRUE( a , test_suite, test_case): - if a: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_TRUE failed") ; - -def TRICK_EXPECT_FALSE( a , test_suite, test_case): - if not a: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_FALSE failed") ; - -def TRICK_EXPECT_EQ( a , b, test_suite, test_case): - if a == b: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_EQ failed") ; - print ("a = {}".format(a)) - print ("b = {}".format(b)) - -def TRICK_EXPECT_NE( a , b, test_suite, test_case): - if a != b: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_NE failed") ; - print ("a = {}".format(a)) - print ("b = {}".format(b)) - -def TRICK_EXPECT_LT( a , b, test_suite, test_case): - if a < b: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_LT failed") ; - print ("a = {}".format(a)) - print ("b = {}".format(b)) - -def TRICK_EXPECT_LE( a , b, test_suite, test_case): - if a <= b: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_LE failed") ; - print ("a = {}".format(a)) - print ("b = {}".format(b)) - -def TRICK_EXPECT_GT( a , b, test_suite, test_case): - if a > b: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_GT failed") ; - print ("a = {}".format(a)) - print ("b = {}".format(b)) - -def TRICK_EXPECT_GE( a , b, test_suite, test_case): - if a >= b: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_GE failed") ; - print ("a = {}".format(a)) - print ("b = {}".format(b)) - -def TRICK_EXPECT_NEAR( a , b, tol, test_suite, test_case): - if math.fabs(a - b) < tol: - trick.add_test_result( test_suite , test_case , "") ; - else: - trick.add_test_result( test_suite , test_case , "TRICK_EXPECT_NEAR failed") ; - print ("a = {}".format(a)) - print ("b = {}".format(b)) - diff --git a/trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py b/trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py deleted file mode 100644 index 05daed291..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/Modified_data/realtime.py +++ /dev/null @@ -1,12 +0,0 @@ - -trick.frame_log_on() -trick.real_time_enable() -trick.exec_set_software_frame(0.033) -trick.itimer_enable() - -trick.exec_set_enable_freeze(True) -#trick.exec_set_freeze_command(True) - -#simControlPanel = trick.SimControlPanel() -#trick.add_external_application(simControlPanel) - diff --git a/trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr b/trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr deleted file mode 100644 index ca5afb403..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/Modified_data/state_data.dr +++ /dev/null @@ -1,54 +0,0 @@ -global DR_GROUP_ID -global drg -try: - if DR_GROUP_ID >= 0: - DR_GROUP_ID += 1 -except NameError: - DR_GROUP_ID = 0 - drg = [] - -drg.append(trick.DRBinary("StateData")) -drg[DR_GROUP_ID].set_freq(trick.DR_Always) -drg[DR_GROUP_ID].set_cycle(0.10) -drg[DR_GROUP_ID].set_single_prec_only(False) -drg[DR_GROUP_ID].add_variable("dyn.body.force[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.force[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.force[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.angle_force[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][0]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][1]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[0][2]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][0]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][1]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[1][2]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][0]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][1]") -drg[DR_GROUP_ID].add_variable("dyn.body.rotate[2][2]") -drg[DR_GROUP_ID].add_variable("dyn.body.pos[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.pos[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.pos[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.angle[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.angle[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.angle[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.vel[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.vel[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.vel[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.acc[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.acc[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.acc[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.omega[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.omega[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.omega[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.omegaDot[2]") -drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[0]") -drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[1]") -drg[DR_GROUP_ID].add_variable("dyn.body.FORCE_INIT[2]") - - - -trick.add_data_record_group(drg[DR_GROUP_ID], trick.DR_Buffer) -drg[DR_GROUP_ID].enable() diff --git a/trick_sims/SIM_singlerigidbody/sims/README.md b/trick_sims/SIM_singlerigidbody/sims/README.md deleted file mode 100644 index fc1bbe027..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/README.md +++ /dev/null @@ -1,168 +0,0 @@ -# Single Rigid Body -``sims`` is a simulation of the motion of a sphere that is a single rigid body with six degrees of freedom. - -The motion of the sphere is found by using Euler's equations of motion, and can be controlled by changing several initial input values such as force, position, angle, angular velocity, velocity, and position of the force. The recorded data of the motion can then be viewed and analyzed. - -## Building the simulation -In the ```sims``` directory, type **trick-CP** to build the simulation executable. When it is complete, you should see: - -``` -=== Simulation make complete === -``` - -## Running the simulation -In the ```sims``` directory, type: - -``` -% S_main_*.exe SET_test/RUN_1/input.py -``` - -## Recorded data -To review the recorded data using trick quick plot, type: - -``` -trick-dp & -``` -The quick plot should appear. - -To view the data: -* Double click the path name containing the sim directory in the **Sims/Runs Tree** pane. -* Double click **SET_test**. -* Double click **RUN_1** and click the blue lightning button in the tool bar to launch quick plot. -* In quick plot, double click any variable in the **vars** pane and then click on the single white sheet in the tools bar to view the data. - -![dp_example](images\trick-dp.png) - -### Alternative method -An alternative method to view the data is to use koviz. - -If not already installed, download from Github and follow the instructions to install: https://github.com/nasa/koviz - -To run koviz, type: -``` -koviz SET_test/RUN_1 -``` - -Koviz should appear. - -To view the data, double click on any variable under the **Vars** pane. - -![Koviz_Example](images\koviz.png) - -## Dynamics model - -### Equations of Motion -To determine the sphere's motion, we will use Euler's equations of motion for a single rigid body. Euler's equations describe the combined translational and rotational dynamics of a rigid body in three-dimensional space. - -![Equations_of_motion](images\EquationsofMotion.png) - -Where, - -![Force_and_Torque_eq](images\ForceTorque.png) -* is a 6x1 column vector. -* F is the applied force. -* τ is the torque. - -![Mass_Matrix_eq](images\MassMatrix.png) -* is a 6x6 matrix. -* m is the mass. -* I 3x3 is the identity matrix. -* I is the inertia. -* C m is the center of mass. - -![Acceleration_Omega](images\AccOmega.png) -* is a 6x1 column vector. -* a o is the acceleration. - -![Force_Torque_Remain](images\ForceTorqueRemain.png) -* is a 6x1 column vector. -* ω A is the angular velocity. - - -#### Force -The force acting on the sphere is calculated by the cross product of the rotation matrix and initial force. - -![Force](images\Force.png) - -#### Torque -Torque is found by the cross product of the rotation matrix and the cross product of the position of force and initial force. - -![Torque](images\Torque.png) - -#### Mass -The default value of the mass of the sphere is: - -![Mass](images\Mass.png) - -#### Radius -The default value of the radius is: - -![Radius](images\Radius.png) - -#### Center of mass -The center of mass of a sphere is equal to its radius. - -![Center_of_mass](images\Centerofmass.png) - -#### Inertia -Inertia of a sphere is calculated by: - -![Inertia](images\Inertia.png) - -#### Acceleration and angular acceleration -To determine the acceleration and angular acceleration, ```dLU_Choleski``` must be used. ```dLU_Choleski``` solves linear sets of equations in the form of [A]x = b and returns the vector x, which is the acceleration. It decomposes the symmetric, positive definite [A] matrix into a lower triangular form, where we can then substitute and our equation becomes: - -![Vector_a](images\Vectora.png) - -The term 'a' is a 6x1 vector. Acceleration is equal to the first three values of vector a and angular acceleration is equal to the last three values of vector a. - -### State Integration -The state is defined by position, velocity, angle, and angular velocity. They are calculated by numerically integrating velocity, acceleration, angular velocity, and angular acceleration, respectively. - -#### Position -The position of the sphere is determined by integrating the velocity over time. - -![Position](images\Position.png) - -#### Velocity -The velocity is determined by integrating the acceleration of the sphere over time. - -![Velocity](images\Velocity.png) - -#### Angle -The angle is determined by integrating the angular velocity over time. - -![Angle](images\Angle.png) - -#### Angular velocity -The angular velocity is determined by integrating the angular acceleration over time. - -![Angular_Velocity](images\Angularvelocity.png) - - - -## Inputs - -Variable |Type |Units -----------------------------|-------------|--------- -dyn.body.POS_INIT |double[3] |m -dyn.body.ANGLE_INIT |double[3] |rad -dyn.body.OMEGA_INIT |double[3] |rad*s^-1 -dyn.body.FORCE_INIT |double[3] |N -dyn.body.TORQUE_INIT |double[3] |N*m -dyn.body.VEL_INIT |double[3] |m/s -dyn.body.POS_FORCE |double[3] |m - -## Outputs - -Variable |Type |Units -----------------------------|-------------|-------- -dyn.body.pos |double[3] |m -dyn.body.vel |double[3] |m/s -dyn.body.acc |double[3] |m/s^2 -dyn.FORCE_INIT |double[3] |N -dyn.force |double[3] |N -dyn.body.angle_force |double[3] |rad -dyn.body.omegaDot |double[3] |rad/^s2 -dyn.body.omega |double[3] |rad*s^-1 -dyn.body.rotate |double[3] | diff --git a/trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py b/trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py deleted file mode 100644 index b4e8e7395..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/SET_test/RUN_1/input.py +++ /dev/null @@ -1,81 +0,0 @@ -################################################################################ -# _ ___ _ # -# / |___| _ ) ___ __| |_ _ # -# | |___| _ \/ _ \/ _` | || | # -# |_| |___/\___/\__,_|\_, | # -# __ ___ ___ __|__/ # -# / / ___| \ / _ \| __| # -# / _ \___| |) | (_) | _| # -# \___/ |___/ \___/|_| # -# # -# This input creates a simple body with 6 DOF: # -# -Creates 1 body # -# -Initializes 6 DOF # -################################################################################ - -# ============================================================================ - -# This file is used to store several quality of life python functions. -# ============================================================================ - -exec(open("Modified_data/state_data.dr").read()) -exec(open("Modified_data/realtime.py").read()) - -################################################################################ -# dyn DATA # -# (NOTE: dyn is our instance of BodySimObject) # -# This builds our objects, and defines their physical properties. # -################################################################################ - -# ============================================================================ - -# Establish the physical properties of the body...CONSTANTS! -# ============================================================================ - -dyn.body.mass = 20.0 -dyn.body.radius = 2.0 - -# ============================================================================ - -# Initialize system -# ============================================================================ - -M_PI = 3.141592653589793238460 - -#dyn.body.POS_INIT[0] = 0.0 -#dyn.body.POS_INIT[1] = 0.0 -#dyn.body.POS_INIT[2] = 0.0 - -#dyn.body.ANGLE_INIT[0] = 0.0 -#dyn.body.ANGLE_INIT[1] = 0.0 -#dyn.body.ANGLE_INIT[2] = 0.0 - -#dyn.body.OMEGA_INIT[0] = 0.0 -#dyn.body.OMEGA_INIT[1] = 0.0 -#dyn.body.OMEGA_INIT[2] = 0.0 - -#dyn.body.FORCE_INIT[0] = 0.0 -#dyn.body.FORCE_INIT[1] = 0.0 -#dyn.body.FORCE_INIT[2] = 10.0 - -#dyn.body.TORQUE_INIT[0] = 0.0 -#dyn.body.TORQUE_INIT[1] = 0.0 -#dyn.body.TORQUE_INIT[2] = 0.0 - -#dyn.body.VEL_INIT[0] = 0.0 -#dyn.body.VEL_INIT[1] = 0.0 -#dyn.body.VEL_INIT[2] = 0.0 - -#dyn.body.POS_FORCE[0] = 2.0 -#dyn.body.POS_FORCE[1] = 0.0 -#dyn.body.POS_FORCE[2] = 0.0 - -################################################################################ -# SIMULATION SET UP # -# This is where we set up the remaining inputs to create a working sim. # -################################################################################ - -# ============================================================================ - -# getintegrator(integration method, number of variables to be integrated) -# This sets up the integration scheme we use to analyze this system. -# ============================================================================ - -dyn_integloop.getIntegrator(trick.Runge_Kutta_4, 12) - -# ============================================================================ - -# This tells the sim to stop after a few seconds -# ============================================================================ - -trick.stop(10.0) diff --git a/trick_sims/SIM_singlerigidbody/sims/S_define b/trick_sims/SIM_singlerigidbody/sims/S_define deleted file mode 100644 index f14082c52..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/S_define +++ /dev/null @@ -1,30 +0,0 @@ -/************************TRICK HEADER************************* -PURPOSE: - ( Single body rigid dynamics simulation ) -LIBRARY DEPENDENCIES: - ((src/body.cpp) - ) -*************************************************************/ -#define TRICK_NO_MONTE_CARLO -#define TRICK_NO_MASTERSLAVE -#define TRICK_NO_INSTRUMENTATION -#define TRICK_NO_REALTIMEINJECTOR -#define TRICK_NO_ZEROCONF - -#include "sim_objects/default_trick_sys.sm" -##include "include/body.hh" -class BodySimObject : public Trick::SimObject { - public: - BODY body; - - BodySimObject() { - ("default_data") body.default_data() ; - ("initialization") body.init() ; - ("derivative") body.derivative() ; - ("integration") trick_ret = body.integ() ; - } -}; - -BodySimObject dyn; -IntegLoop dyn_integloop(0.01) dyn; - diff --git a/trick_sims/SIM_singlerigidbody/sims/S_overrides.mk b/trick_sims/SIM_singlerigidbody/sims/S_overrides.mk deleted file mode 100644 index 6b9fd0858..000000000 --- a/trick_sims/SIM_singlerigidbody/sims/S_overrides.mk +++ /dev/null @@ -1,24 +0,0 @@ -#============================================================================= -# Allow user to specify their own package locations. -# - File is skipped if not present -#============================================================================= - -#============================================================================= -# Set up the include paths -#============================================================================= - -TRICK_CFLAGS := -I${PWD} -I.. -TRICK_CXXFLAGS := -I${PWD} -I.. - - -#============================================================================= -# Add target to clean the documents directories of TeX related files. -#============================================================================= -clean_docs: - @rm -f *_log *execution *_hs *_summary - @cd docs; rm -f *.aux *.bbl *.blg *.lof *.log *.lot *.toc - @cd docs/tex; rm -f *.aux *.log - @echo Cleaned documents directory. - -spotless: clean_docs - diff --git a/trick_sims/SIM_singlerigidbody/sims/images/AccOmega.png b/trick_sims/SIM_singlerigidbody/sims/images/AccOmega.png deleted file mode 100644 index b464863e605f13b082c3bf379ea2bd03df87e6c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 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 XFAP~xc?6tu00000NkvXXu0mjfNHNzM diff --git a/trick_sims/SIM_singlerigidbody/sims/images/Centerofmass.png b/trick_sims/SIM_singlerigidbody/sims/images/Centerofmass.png deleted file mode 100644 index 7ab5ebe778f10ed8d134ca79d8a21b75c7c48bf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1890 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 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/ForceTorque.png b/trick_sims/SIM_singlerigidbody/sims/images/ForceTorque.png deleted file mode 100644 index 168af35f1e01a04834bc2637ae9ec8b0e27359b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 886 zcmV-+1Bv{JP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&0}Dw+K~!i%?V7zy za#0+|zdo4-E>RIi(NIf+3DzPlRul~lEfS(cWT;BYu7%BSR=dU|@o)zuZo z$H%{pv9U2~t&EY8k-Y2N-Q6LXOj2tR)H_v-lamvryStkreHj=SP&PL=DJn!JIxkfz zWu&ua*4Earx3`CfhX?j+YG`O+^)D|kETI#L1p7=+PY49 z<~?RGP>CO5sl&rV*ladjUS6_eeSIB$eSOrb4I!!b_ji_0Q&Urzn3%xy^fcUVciyAa zf{>J&Pj7E;c@q8o{b+4%rAQk>QffYRb#NT#fy~UMN07^rFfB2yhtftq!ceD*E~;8 zPcb_?%Z9tgwt=b&~3~@ALCBMOmy?E8CMUhWu9$FH(vZDa8ly8~57=QJp0!>;M1& M07*qoM6N<$f}cH^wEzGB diff --git a/trick_sims/SIM_singlerigidbody/sims/images/ForceTorqueRemain.png b/trick_sims/SIM_singlerigidbody/sims/images/ForceTorqueRemain.png deleted file mode 100644 index 528594f014b4deb921d1a4c9c2908c603b5cbdaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3401 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 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/MassMatrix.png b/trick_sims/SIM_singlerigidbody/sims/images/MassMatrix.png deleted file mode 100644 index 884bdc4e97bf87cc568326bc79f63f9640864cb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2953 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 diff --git a/trick_sims/SIM_singlerigidbody/sims/images/Position.png b/trick_sims/SIM_singlerigidbody/sims/images/Position.png deleted file mode 100644 index aec80ccdf63beda13477e080297d23433fd9dbd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3476 zcmV;F4Quj=P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&4Jk=PK~#8N?VY`r z4Z#|Q`<#==m`rG{01*KTnGBiCxB}w}kjW5{A+(mY5Q=aG!xaoyFoYtfpVBX-c6Cp8 z@1N<~`+e5x)qD4ERrObIef4#B^?!cVRK^%H0t<*)3g5qfuin0WTfKbwvO00%M0M)a zsp{IbYt`k;mzyojI`H3SZp=b?@Zdpp_wL>5)~#D%I)40kb>+&H>g?IGL0rt5fCpkW zi=CaFUymL=YW^*U+T-|j{rdIh-)}fCCbz%8-z@pfhYugZwtIVf%@R`z_CPiax)m>8 zya?TjzHDu6Rkv^7ZvORyuFA)cAFI!wKQ~LNsur#4&6_u&I}<}Uhja}|lbHqdZ{`{tLGcBV_aqr%}a9p}AIz9qXdm7=lKx7aPL?up>DTKxoF>B8A=g)tgIddj- zA?k`8x)_>jub|l~58KoI7{bB9LFkrnKF-1a6xOpYmnKsN7LW~s*aMXnAsNC@0U^G^ zKD8GTesj*cOVh0V7p+I&OnJBqvq7k9u*_Sj#7emPLcHVt{rlDK?(Uy>2(g!xPoF-8 zxo_{5i3Ma0Aa%E&$5&9l3LpPL`8)QzrI63Wcr;PkYjO^K1oP2XP0WOOT@OOPBYt2y*9Ew<`5C z`glZU+E_peh3*2e37)r5rR5omx>1;U)&le_Mm#6r*%dPxg3^$7Q#cQ?57zTYdyLYe zeGxgjVWu1`AO%82)03Nh;|JP~{SXdfC9tU0pR~jek0DG>eZ|2%aC>k}dI`>^kbcr5Pvq&-r(u~X2fxl= zAhgtY65K9T+{2ioz+IREQQV^Ic@AS%fd!;6h$p1MM`Ml(3rJz;b}abmO>@*(Kng?N z2UtMNQDXrq3_X11?u(fM7LdYl{KHHM3rJz;Nly!inF1D&!mxmtDPaLAi1Uo>0?EFc9DR}^<)ewPO?;xV8SFXK%erIq=*U;!zJxCP@&Z<`E{ z^HUiaLXo$Cr|?b?f~L2Mc_W!A7JbHTVYD_zk>d+}@k4?0KpDj613t3c_8Ozay~` zM5aZbS~)PBfyO;a$3GFIxfYI)2Rw&G#75#ltox1;vj{981@Z0Mx8~PoqL>GBx-3%_ zQFToi3#ARxP9D_lnV0zXe%l>7#23L@WEaN*QV^T&fnfMlPKIn;Wh*-bu8}Hpn+GDu z2bGHLV6vtkqfdQdT?*SW=^WHe zEz>j)gFFx}iYl$tSgn8DBC-ty%=%oRNCem>*OKbk7)?qnTq#oMAy9y%f1YVo0-`cy zn)kw&2Ibs#-D9vPRbGCl<%Mm=m77YJ+6?Pi#*~&bHpcNtPfG55edw}xi0g~$UySUc z%?{)G80UQvjDC3J!@<4Kxy-QrW=(6`d^+oGBe~z)j)`!t|VHC_GI8_&B_#LBw zQ+@HmTqpnpwHSnXiuTQ+k;pkt?wx}4eCtA2nQQ`M@~?gB3Kr%mvc>qW4uM8&8#_wv zlUtzNEn!{y0dZKyr#h8J&RGjhv-B^lQ+-MU#e!o1>1r#Bv5XQB3RsEG6=WB>71x!S zHt_*2stQu?6wG@My#&$L@P0xYNEAt-!%4Ljo@ERI#T^x4X) zirV!6*-%tpIA89Xt08AyTYZZ2v}i^P2vC^0M8yJ=e!C>zw~fQLsa?x(5h*mb<-(5r zz#i#DfaaN$-c_;5;xWV%kqzd`OX5&>3z{Xrk1Y}4n&RQ&aUeu|$*=ATWN(uK`|5mM zww*@Af(3^NpQy z{ozFur?WPuX6fcoSIUt0wm3iz%87kayTESh3O5swjmwzdL*Oot_Dya6Fl57NeIj0= zW9Dp|^H9fF-&QVho)#VdfKeWZRJyGt~2kx~WKS+FklK2nC3v08b&kFom>-H$H3>QtN8 z6CXP+hlSAyNpDa+c4NwU5mMqh!CA%Y+P6zlIc{4^&$jGCtFo@dEgY@!rh&bXckH7N zxt16EqLt?uIS(VY?KTet?^@54#N@mPj&~UGIdh(p)}?oZNCWn+`V!|cM!f;Nu^6_? zRc zu#cP#biqD&&Aj!B4G}-fwb+!aY&P{~W!uw;QfrncDAxw*R3Z?}Z&-Un6u!)z-B zTf?qm8>1q3i4W_rO`We#JzyWUXX-k(>Y0umZ!3XeU0WX6hV^Wx`m!hn3y3Okn-ZJl zz(uFrnee(c6*W9n=GjgJK}WA=Lk?l`PE7>e=K0l@-4r7NPh-iEsynsrD#l z;(aACNI-PKxPY}M5`LT25C_3Fx$J9KJdA~c4X%6y@&&+kBpAztc+{T!pTKL03=$AM z^;U9*OC=r;b<@kA{O|4Ug_fI&$YbUucq7~$LG+l{UDD#k0|s|tG>>oRn&o2;WELvn z{{DV=87?lLDMMOGGvc=n4Z)xx4SDAzh6`w8UJaDJp3=ntUG8QIj2aWwtR7rnx#_-S zW-1JR64e|HzWZgShy|oD9KbeH!U9qV_CU-Ov49jn{PNZ!N4qj+UMwI55Z|J77sgBp z3rGRP&)m2RW2S@!qyXfB_!R;(H7pzL=Bp!NCDUO>Mvn(ti6GxA)GyY}n4vao{1PBd}yfe|AF=p9V zKqdqN!0YL89D`3}ARN~-A2R}8Yrofgo`Au24h{~&#ByVnjRj;vARG*kgNOjX@j&oC zx^CZU#BSf>HLJ#N<4y<$nn}AJJ3BjJ*o3wR$hgJ3y}cdcAND%Ts<8($A@Cpwlp+TF zMmV~}0|=HPB3-w5jae4r`~j4`8e7sePf8ViUq zW;7NMW6WqQAjX){SU`+1qp^S(V@6{EF~*Ffs{Rk~%BxDOjI`tc00002#(#iQ+@En}@Mjo2cL_iuj8nIHGw@1E~`=iFcS`|T>mT~$d}2><}7 zdZ1jqkCb}^vl9wO>{AS|JrWs;w>uK>d`N%k$jIG7pb-E-W2W*xQU1s)l2JD(0D$_P zKOr-H6BGvkD4g|hLHNeuSBu**nrI+De_LticiG0yQ%Eq#CPmkBsludjl=0vgRl~wU z5uY*!QE#x3L7tHhNXE;Y_~naazjwDg+OFxP8gD)^7T)pG3(>&P5WnEi&b~=IElF$! zD_{scc{gD!u(G|t<3$6UW%9oVfAbYBYdp}|+1YlfJ55c9fe3<$>+9=UI2=xh^>UzX zSc!K7`XB~wYI)~miK13)G5RR;%a>nXl`yUoUp9Nw?Aqt+u0LG45*%~ z)7)x}`usYENHh+BZy#S+n4GaWcTSVy8l9MEK)Hvmxt~a->OR-d(D+)oD^XEX<4+QN z%t@H;^78VpcX(}WI+xSQ$RyGH;GiRB6uJZCzx8LY9OX%i-M!Q$`s5uqq9*;GQNp&Q zSGN9QW#~u+e%Jit+MaOMohQuD>T8BrsmiTiUxf{5!tKc=;$9XUHXtdpS+%YdG$1#yzKLY+}#7IWH78q z(k#1mS>9tVw94JdgjUsW?n^@==?H+8E7jaSB~TB90YZGUasUfT1L1Ru$#KMykJCw$)siE_wNt+?+V{ zzU6FuUt_hVKV!+xkC}9*VXVrOX`i8Ha-;_hA+gWwxksh~u19zd} zS8@0!FZ?%-btm$Vj>CDJiK?Vw zbaUkge{4yT5+(%ci!M*~W0ZC%})0CC5n{rU4JCO8}pS$y8XL1m({vXXo{ z0Uj6_Nbh(w^Ok99gB_fi2^KC1*jekAGazn+Y(nN;$yVf!U~g+H)}meh<)%HG$z+mO z?Rb*y2i8HaQfpc<9C4TnFfOM$(phPl*`F<|*5iB{Eu4pqcfZ^I4NQ&6_8xOpd>Wn0 zf2$q&@69hCeSaFGOz$h4Zujt*=BfY@62!T!>7f{$YP+<0dH@>k&cWWdZ2*2M`uPpY z#KovQ3Tv9nMzCm{~GC;Juybd;r8Y{!__cXZ43z_t&?|plP!@ zj-Gc7n>kz_m6H_5_?(eV8}ri36-U$@>RF$v^mclE-31cg7t0Yh{?M+^TkboAhCX99 o@0HfwghBsLIsf;{pu+4xp7^F@N+KBf^9KPuTrn=sk%V9W1N4Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&3i?SzK~#8N?VY)c z6ipb1d%s+~{sVUtF);B6G*R$C6Tv_Q10z8L6G8C^O%zNFyueI6FjmmOK#jam5H!)y z$OHWc_M4~Z-)C80Rdsbw@9fOZ`#^2YcK6ir*8Bddx~6w$W`00r7=~eF`KQhe!!V2t zCYFX_7zLPE8irvMU}9+)hEaftty)#Rc=4jXV)1$O=#gvRjT<*ydxvEz#gakR0LK!8zI*rX>fXJ3^*bgX`aC;3 z>jd-4l`Hj8!)VX@_wTFCn>SYv9z3Y--@jjd`}VEcwQE=P^XJcM*|KHzRf`X8JbChD zb>_?&_j+g{=h2~QH=tIf2tD^n|$3^c|I2VMB*A3l6oADui*D2+amC?YhR&io%S%NRxBlegW1OAqkz30_CiYsitE^*?z(q+;=~D; zpFe-z<;Kzgzrc_1r&9P}k2DPIcfWr9+P&VgWsA!vi8X81RD(M$x3_xh)~)(z3+ff- z)G=6Xxh478vuEogfAjhCXLp{&{$?MjPHqRdEy&^DHgvh=(e2Xg>}-9+SSqlk!q~E} z{_fqo`e+($#c(}--38uv;J^V_4ykK7i;dzMTQtRBNRe1_kFUVZrP$uzxS}?vHhg`D zY-`jMp#Y}JExj&>96L1`2+H<@$+riAsB$=0vhT_JH7V$Ql%ESO+CV!)A4BM=f0F!a zRQO|-6U@@3rXg&?JOS z=Sxxhb3#Ku5hQXZM6M^OfcNoQKdg_3(Vz%Zw&XIguQ$KCX)j91n z31J^X=~FrZk2|!Ve$bybWEDrEg2RW-KdiwhW7yOcKY)F3C<2}11nNQsX-W`N$J^30 z83@KuVygF0uS8Va5B!czIL|60gmy~UVv~!4mOMl&_?SOQz`NRE8b}FZ-$DuUfxZ_I zqek(M&$c0}I25XY5enu>Hkf9}SfYQU=vyd^{>qGe7=e(;kV>J?T#s$2Um_|r8xt@g z3e1?0f&`IrLv*g~EN}cF6vl-RO8k>DNqv>MSon*HHnh6hH&|}PGVW*<jRQK9O39=h`E?lL&HKMRr31snoY0`|*)O`IS zZMHw~N&f?gN%qZQ(IS9^UHU|mX;WC>k!9|V!hW4wCx%H`pE#nr1@yE%ra(U%a35^d%>-ox*q2y&eFlhh9NArzNVR5xYD?4a|*3Z_=7vHlDC z&UvomwZIMs2X57Pz?V%1#nx`&yw+x;KjsAE5nq-%3d*NS0KdtAb*OD17)Sk6bj5HWXDh} zB#8cGqBiPWZj36g)WwN&lm;RA?Tv|8 z6FCv{A$Zka##Z7*{Sq|lPmMDH$oohV2>-qGA-1|z`#A3hF=bFz&bK(OcIA-I#_X-J zh>11zb1o+?w1MkNf>pK%MO8LvD`LKFQ#SIEIMCjb>qF>cto=Unqm%&A$57^le=VieJ+%gx%5sJqM`R#B#e&Tj4^nFIyMV(qiI)#fMH|}&6Ufn;f?3xQ zcsQPKCytdk6z#)K5*ZTh&b=3B#}*PTzfOEB7t~sjHQ7@B8e3hb#Ih;qg(lUK@sv#| zn?!q5f0qdv+b~vbgpcdniUauZ5Sv(p{3z8Qoe%A$F^ZKfk&pSmM7C|8Qlec#E3q^t z3k7M;$#Gt;=`uqv7NvnA@s7dq*f|At(_$bOE#S%o}#^2Ft9*RFMWiWMtX z)UW=A2f_V^!E;~W#e>#;J~+M*$R2$0SB`-YCI2u1o8xDU2mi5LeEj&)<*`3<`TF&% z%To`*^ACJ|s3T`f{|`WJ-@g46^d!Ag~9k%c$7Kf;z^&efwN~=gu9M6O4T2>i+%v{}TbAj={>w3A}=t zb{sr-@V~EU7+3HQ*<;6!9re*P*nq@e4`B>cQt!2lnx| zRs3`KY`Eou{bYNti?xw5bX}}nZ85Q&A_xGS8pi=YfH^kq0SpStVIAK{gD+s?P{1Y) z1Qa1fr2AM5%VHidMCYFX_7zLPE8irvsQdR!~eSakt!`QJ2 P00000NkvXXu0mjf++DUM diff --git a/trick_sims/SIM_singlerigidbody/sims/images/Vectora.png b/trick_sims/SIM_singlerigidbody/sims/images/Vectora.png deleted file mode 100644 index e301c7c92bf1257ec1a0788aeafe8619958b2e33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1493 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 N002ovPDHLkV1gu+D^dUe diff --git a/trick_sims/SIM_singlerigidbody/sims/images/koviz.png b/trick_sims/SIM_singlerigidbody/sims/images/koviz.png deleted file mode 100644 index 7e7605f7c0ec1f3669b09779a2777c50b9b00893..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160434 zcma&O2Q<}x{6AjV*(Cc4Wh5&kS)ot}$=+mT+>mk2tZY)Ykcebu&+BH_y|~#~_ZnR? zFW0!X|NFK+-|z4I|Nrwlr-l2z_x*m2=ku{%Me96Jqdw1e{>+&()c4fyJUnxTSntf4 zbFJj0z<1n4bn(DnXFVUPDW56t=U4*1Aa+pFQaW>{GLiDgngsZo;;Fi^=b1AM&j`QI zqU^bR&zw1ZfA5acBVUWvX^Ix_k?%d5DUy!KFJtZ`3s8r@d-v+R({)LW3$Gq8E2&>r zcDydBo+%ksAjx=F6!(NDg6G2ECF)EI^oTLEx%p5N>DdqIhvb}Mx5jfl*AG$tYf@{_ zu^seS(!XgRufT27 zptYq6r)mh##X#rdRz#mP`Uq`np_6K~IFEV3?`8>->fyk+Zz<|1?7{sJh%^}3s^Z@x zh8H7w<@8ehmh}+KG;$w$j$DdXAktw9$vT{+6 z%8z$FFy)6}!6HB+b+<`7Pq>m7W| z@!vp{h&i5_pk3cjs``A6k|y9PW-rk~?_|G(fB3uLssG~Hoo1nmhL(VRL}YSN>w2DTxiie=}q~YON!VDb^4*Z#^36fXi+5>M5eV#-=e-NO_%g7&rl^ z=o8R%gsb3BDMM{ET|Ye!7O5BhWHL>*CD)WZJ=$E~dyIyuRPOV!r-=pyorY-JBK%Rc zrqpj`p*8c93!W;i&9GW@@WJa?&}N`dmgbv)!Dzb_rd+*KtYHqydovriGpI$DP+fub zciNF);~3I{aY0?}R_ewcE6E&;AbbZW<|h=7tY@;?SdlB@zi(WulEeF_A^bH6_J!Bw zJ*rP(HybYJKkktH`T+-OvSleU*+$Cl`pBZLzlkXKe&dnasQ~N*9)k(- zupIY+(Wa`&`?Y#t&-+sy9n5U!(7O3*8}EOW@bN<~wr+HJAl7_n0@yg??%!;6g$At7 zAIh!zEcy>DJIihFA3Efk;#bxsIBcDI?-!-ybM=6Z0u_Lig5Lkm&jbBAwDkvH6fk4Cl6WHPZ7i`7o9W6O6cw}*0WY-s)7 zSJvKENLo!HtRLPV;pFf}=7&Ak;RCx}lmi;qZ|=kTP-inMP@xIWPuiN{{^Eij==i5v z+Oa}&uyH{2m1PHwOTmY45eRL3@WcJ3dXRu8crV)n&2b7IhCW^LM+oKmgPHUTd8oEM zkuuGzO_R-}tq?k!ucgXD^9!ae-ZNQ|9UG|4KG~GmpriQ^uxd}!3be&dVve&tHte(K zUXmJhz?Qm!#pbwv&GOidJH#;RE8TyVRC_7h+-F+fqG}=Ybb6G{-n4pMHf4OSwnCVU z!*}Ct=zYeAtG4J$8+CCK6fXEcB3H<>U&i4$V2l%=Iz-!$C+A<5jhOZnHHUQsc&1g2 zb>mYY3z-U6BF?V4`up4uMNXHsZM{Qp(;oUdqqBnsQFC~=__Zwd(OwQ^pdoc z=g1Q2PJN)tO^|gafhN6YCXnNlgzW>)t!!}a!>(7e-`0l^iwdV*9(&f7*>1>}mKNT3 zneLFPWJC$KgnTO_JC&_KCs$AQLj&_nk!73{qdTih^5wZ>iCfR`OJlHaea_BV-s`9X zoIkcPVC)W0PmQ;a!r=il8-{6)y?$8k8ivtp3c^|>n)?lX3a*gW^Wieh$K<62IsF}^ zr&N3&;?iD*T6bM2g`Eh&C2}@38QF<26UKw6NgxydHA@iJ_d6mm$+XAHbZJzJtYVr?GJ( zZE?Most`=9bfo7Y3=+RR+6Gz7+0tnp9v{?D^etVB2TxQ6X-B~LCemVwTL7Q)W zIUQu_wY~ah6kohE)M3@;CgEk!3-Vg3fODO0_u$g^K~$=-66L4nkYPm;5m_#1;Qo?y zstCKnLOl^Ij;8x^ex>sT&|a75Bik}(BXOGOOH}Rl0k|s1D562)h&HPq;vU*EJ2fF- zQ1n(!19u!O2n?SDyROtD%BM_0vkhmkDOMj(mq7(Un>3|pzxSXr6A zg=JcO(Hu03FZcZsjE?x##l&)+tu-XMSU(wHdep6_-uB4`4m2@6?@7!WrZUm=lgm-@ zDf&2}dHrfd^Lzph8Nn>#d4f5(KE|)8uz~nut$zInE7qKxq~*MyvBUHZd?)xo?>KjJ z|K%q!t4FkpT9r%P6(31m$I@3L(U@qm=hFLYT7mhHmo;V1k_k+xU5O{n%pTI8gc2k8 zLgOwd-;>^O$xl&(jM$FZTB%w!AZ!_Lce9~3Y4FUC*Y{<1(+^G^GeGlD z*4(&G%cHr)5gpL|%TA=*>T);PsGeF}rGjoU5CcoGrcx^LEM#k3fjAWPoee74<|JTi zk~zrUxBVuM%6D;4M2@NZyz3M(`Mzu5nX>pvhxXgj=^J0s3bmugjCtMnB{S)pc!-fy z=jgT@Su>tU@oL_II?CGlh-94xGXLrPLmEC$w0+=6U$KI8<${|h4Ymj&bghx`#!`K< z%tu_}Jj} ztkSo@X5^maNY4eXoU37N4feNbrJxRCFBlxV8TEWkS`zav(a;CH*b-oMnlWCY2a0JL zIZxjg?7Mgqm!vkwHpfFwMd%l8MD7VM>fY8jZqiz$oa;d?m(pGHjp4IOj-QUiapq*^ z+x%XSZzYup{gmVwV!HpWb*kGNQWP2tJ|HRY1TZuJVw z#rY5kd5fEWaMZW=(yI5tR4JAA0A5)x2{x?@I(9~wOp2PN`gd@VwF=wKl3WzdJ=s2s z(M|N*_;$G7T(SBTA&dc2iaY}CO-oIkUB>f9;Lj1IpBiNA%)0IQLJ5Mw`oI_ecj9Gqg&w8fr)>0q8Nhuxa3N{$ud=MO#q%i1o zVfmx%`zW2eam#GqapDYEiXA@ro-zlJ9ckbj8-3V@UQrT*lF=+NZoPF zIL+-;8MdNp>0Cm(pZ#=D{z2d~)}@`pc4p{@^VjM!FcFNuS4a8*)kPO?Ig*rC8~8CE zZ5gI7((s)KLjpcF6!e_3gavPNY^70OJo1C|A$$bD!9C@62{NEJ*sY#PHz7-try;n{ zM6}5s-}6$LiqVM|NX5dE)y@*dg}^66mEch|^hADPHrIQ}X;dI)Vsk9PRAZ^BWw|V~ zEpeaMgO2+rvkW989l|fFDEm#{`k50OG8w1qE;xZ-E?bEhpt67oI!Lsu-HKQCr+Yau z%)KO)7~%cERppc8B1cRr$|#SckN3SH)n_ZcoTlS@$F-k}2laxdaZ)DZ*(JxS;Y-w? zuY%MMrx(&k4dUGhLp8}KC;5VrY(xgh)j?cnYi4lm(doU-0e$o)$?fVQc$N~H(9{! z7UnsTf+@;xVcKr}?uq<{t6)iAy_#`gD;c^D{cK3fZfC?mIQVc9y}YP~lyQ)8&u~ai zJKp{H&|8s0@~ef^;;$T}q9~>X`7W_&j#S-9s_=<;^OdG8{5gZ}<=&voYq53*H1kJmS~CtQpyMNRaA5z+nOkn zcxz?#p@EUR6_T#qYGd^_Y)R>LeCk;Dsz~VX{zhl72z-{@#^+-UxZc84r1_-Rqm2uu zlj^&EjKOFhX+jRBDg-@iq>}s_R&r0T1s@NPU}8jri>D4I0Zz5mXPC3`K?Z@V2=amq z@+-)EGW?Ii4i|xYlmFv_-*T1GRR1wJW%9(!|JQssO7Ji7Qzp;lObLLD!x7 z@8@FooNUy6D7kwB{t@Q(%LTblai2eHe}I%tQe|p0ojaaKWNC4_k35 z70FyD8<9ll-b{f*x8^ki#33Gb8aOlgZ%liasTwnp;GnH6kGgLOR_CUi9xW>B--Psg z=IGU9QccUxU%eBpZ(#hs6uLV>q}FRj&XH#BZM;7*)@l%hZ$_s?Tr~Lrz}G>$*$C$H zT*5<+p(#XoyOQ4{L}4u;(c|tZPo(*%W$>{HGcbkd&-MQ%Eqx@zbE3w{pZe&O{A9aG zF@qIB$c*QaeeR_i5Ne9Z^fL#t`L6AVUrX8-m+#PqwHLs_Zp8Dj{ve|8y z?KLWh5NUR41llIT2X;7p^~_gxZHE1$ePpnO8+2zBR}VWb0|g)NjHUSlWn-aFyv0+~ zxCy{g&K6yvn~LH~6V4UFTm7D39=gM^C|;({w)<}pxA)o_iATJ&VxzQvoOJhMF)1|u zrE>Vq)lVI8d@CMWHEy3ZV%ubMzJmH)n|2WHwa4H+{*?Iy+46wXL$qj`g`X1>Z_Y+I z|D!zX(wnD8TL_@;8yc86y~m~2x4ggB_~Vtnobj`PyDO4hp$Wx`a{4*Ipr@fvcI)kc zDJ^a%Nn{#=1a0SYjXZDCxK??GNi1k1j4OHQfo$1mL?B1SQ6VLCD;s;wvrozpf_t57 z*2TQE5hJtN$%t4g%C%StefeXGn3?Bm<6@2}fNJrN20Bl7d4F#B>GpJHlvK1f1uV*< z1tURzj(xAM)7uZj0{&Zp3*zM(yjwGuZqw;%#*Tww$MDJ?kZDm*l#}vhKqymEsf#gm1mH*5!1}JoBnZmN}j>CnQDl~#z`(M=H5zH1w((T<%E9It8Q;XAs zu{31x$(Gk-z*gVNrg@Zb_=Oxk*|i!yri?mZJeS9}*1*Bd=Y^k&EdGeb)zw4G0+uu^ zKUUfe(^p0=Qf@|n=J|yE%AaeNpm?%}+pUK|<<^|EOa8K2Wpe8U@zQjj)-M$NZ*+FQ z+a_LRSOq>CBayqWxii5+GxV68FVTN$9!_bo5sF)NP;9Ywn$@I+Ym~9UXU#54zOFy`s--Ri!~o zL9pKIh+)YwGtWMp;^~&67n^R_CtH|0df8HV&-Gv7 zw+D5^2;Lzd(#RYD-`7yAe8&||xv3IGEGO*yo&)kDX+$W(hg|7J(HEmjxi{vbwr*4w z#A2gw?uMPFsAP0L-;|&2e8dK6UMkF54(ez_gm2_&67#;JY`c?rZkNICh-UH9OY%64 zx9&l6am8xOp)YNkke<1RQ%w(F*%iVz%pWq$}QVF0g}rVkeOxHPZTd3~h7 zCTmGg*PK7sq4ez%4IKrsDHJGLToX|gEz-pAI4KKwX=0Dgf4_fo$;L0aOX)d8=l@~TGx96hhwBZ852w57h7@e7*6lr*S zUWYj4Z~f!$HG9FN$8sdc?^~2UHzz9o&M^EZSp}t@o`GfH&eisGP|fMdVHz@U-BW6p zJmiJp7b9+AC0DI_dfBdFuDNiSf+eu6YN^)V5Yxbp=ebTlJ#TJc)U-TF_^l zB@SV78T}|@&?P<{@#PW?q9SOgWLfZf`fYLfs6d_@l-e|Uw&e|TF}L)4EQex=y#r6S zaxD$ay+)c8^TGul>vOtmX?9h<>X%u3qgQl2W4$9bT%BhjI)Ik6?Q!jhK?y=MYvS_7 zIJ=ZG_0Q zWTB51s(=zY_WqUDF{_5}d-7E{@#`@I*8v@O!ehQd+f zB3Hmhn-tQyv{Ka^l%bA$2OxXD7e?_>_2g{@%qS59Ed62l(=DLtRRnBhp-T}eux0%U zHunvqIfl)z@Y@E5<3Mq9E@j=PYmol8lqAw*inOxo#y+10iev7GJ+irt_2`(9;Xe6_ zLx?JFXcZqGBsjL^w+~+mjVKm5!8fP4q?&t=vlV!iI=btTvlmVi8e^bi1n3+EcNZAm zMif2t&fw)HJ?fnGa$O#DjU+lfJ)!#3t+%cR<^AZM@n7UD#bi$-tVPJ+87 za&+hWN`WbnQk1ji;MJCU+_baAvKT<G1j|C^`E#x9jzfNZ+oGS7(>SOh@D=b}9N*vCDbK5-8Jxf-f{ zZ*AaGV`h4WbxV;(T<2;M>>JUW3$HXp1f@~F^Mq>&@8Kd(4+*f6tuQidc{0$z~z}`5DKolsA_j z0ceb4@4}zqvDL64TqW}hZm7vG>)HXb62~6jpLy?2_;n$T4g3huFmiTE9jF8T@I!Lj zo_x}iKj@wCZuE5G|9L#t7w-JuBFO*i%i1^qEV4yJbgCFP35G$Z{8q{cBZ9#hVg!OW*>I)AM`UPF#RRDir|KILk%@RNa9+R&1DgIb!{dp?l6f)4y zlEz+!UJ0Ze2EdEj!dPWW;Yamq@>d_oa%<`rs%g3>9xf`L8n3r(^?Tr_ea8Hi)2AA= zk+RqpFH_&yh!ynjdE*NOSo6-9rKP+s0W~CdFJ5iIxO!Q}#w@#;sECsJPj5yfkE{H--ja{r@w zE=v%;q35p7Z+ye33_J<9O%q}W5G+E#_OxzIONAaw@6$%B7!RMZ;}mP<UtK|#C@XK90t6fNDmm@wGj)58vftcJC^$z{ANdJCxtGXpv$ zMjEh38}}Eo$aeo|6o94r*rwlUsBlec<5Y!EJARQIZQpiA(pFZPI~1XCVA&K^4XCoG z0IjT=^v;evIC(x%u~lwS1}O-DOFv_)5E3|nek@no2wEyf2Xfk;0%fLo%Dsnkr+!ya zyj?+|-Zl`t!-h7!=N?5j4oeUboa&f7^-l*pA8rH?U4Ws#pxy+FbAbv~{px5pn zV}mX65W;Fk2v>wBtI*2VtOCtXUsGnKw3>i6_jHa$0s7+w8?ZVh@C3q^uRSg-;^5Zw zib?`Dg%1>^8tP9Tf_KvPH_33wfdI>jH{#_gXlfk~-J1@ak{`sT=5Vb+U2mS?(qO~S zfPJ_b0{&h6SQNVhGHLT30~PNYL41J&P~Cvqf6w{TA;R*cs0Lj-}7U5freqmWD<45HRd&T%oGgu zI9Mt&Oax&rg>!iJiq|HvaC3)?8M}i|S1eCWihOW&D`a`g079?_s8`@ee73*U?+u}s zA?C#tJTPI6t|pSi!fj7-XSn#EiHH`wyd2Q36~-04wu{ zUwKBn^kl3^lOtqVFV`ezztjCh^RObq)_oZ60A&F_bwc4?A&@}=}Wny#D4wz#^m^hc|5BUNV#boHsHAzEnJ!;V5 z_Z|c8E>*{UV9s}6rVoA!&O!~(wWn7}j+Sq5hgU}agb;`#ppU}*ECYb2ziPSH&I~6I z7LwtGJZa;n!Q9WXUhDyMs?m=kXwBJDD9y~{UUrNG+f@EVv!`uUQyz#B!T7;FpiAo_ z^QMSXf!{M!tIfvFgS zb&?T5hCUl;9qDC`SP6rZ$YPwY_qgj=oi~n?^)6(Qz zt^zFg;WKr2q5+Adr2CN!?hEeAImptrE=5A1_rteyI7% zm-T4#3LvrRk>U9)K*Zt5fCY&i)Ro=WOi*$Wn;1IQQkMnM%{+GIuYqlWxKvZO;zPP< zPFt8;>6Ks#kSi?JfYB*3?9*{dMZo*>^OsHnf)KHo%bOe2LSYowb*{gCiKTpEbe`41E9z_7lT)jUt)_$OR>~9<~O_UiT-9x zlr3#n-mKOPJTmiMRr4j+((*mR&;b3Ff@ z3#O)hWO2gXB!>QNPqZlazV|2?j2hX-ANZ47FV8f22YZ^whCTLshipOm4${XHpyhHN zzG)0vUjF0mcgLaUQ!vd$g3g5iHlJnPq+2r})&{%{I2g(mA>#^o%Jks&WAVF-ec&KZ zrl(OAyNv)rT*0c$D)4jm$a-T^49ihLHnLxtMPDs#7U({xEF(Zdee0~-DnIzPjkwpS z!M-ZLI2Uw%F5`EKr|{PNTt?_cWaryVb{X3?D=5UocS|rQYVT@c^~QIxD__`qXT|Kk zu=?dWw|j z>w-q}lOiR@_GM9<3Cl_N7{iu#51ft&dSVxS&k^$UNSo;qWEYAJ#0pgeAFnuP7M|Z! zcEZaHd1wmFQP|Xqp{}${5!AcPQJs?KGN|LRpuVt|4$LUDmC7%?F#+t9Si3K477k=PQhgo}+#bL$w^NP&;B7FNI44qA_g)iEwoB!R$4x~ez(6ZU&lg~UE;mc?dw{42ZNU` zHsdwM8mAWj6dEQLX+*Z8)frci!kD{-;Pi-h!zYRBnbx0eZ2{f1OoK?2AagyMskC{b zBfWRcw}#F_1nAC9*Apa57gP$;slvR#0j&BcKF{~{Q`Icz;x2$+Mc;?hDW}(7dSlXL z-a=RTlANQkmCi4ksqoZD*@%iMhy9KrN+_IOXnKQ1ocbHI*AlOTx+Zsvtx&DW@;)-~ zrMgB9_f!-1MxLG6o9ZqLZf{9Z`ryFbtU%SU<1RmUwB8N7S2>3qx?K!-o67X%A6t$? zw7;=jm3U7u^{HCi6IP`{SVu;CHI}u)Q92j3bMz_!{6d2p1uVjy zv1RqBrtW+6$R!d{UnOXNG<*3y5PPT_SJ2+9*L!vza-jBI1v4yq!zx><{3FvJ#uL!o z$YBCqHL&wW^kE4K2S5Ez>0%4GwN`Oa=t_-cV3Pt+XQIwYG|_8!QPPtYcSYjlwW;yM zAU2ykqpzAS7w{2vw3`tPw;jbvir(LIVd|`1<9E%udWUgNZL)Qz46HAn_JNmnZ4cEK z7}FCA3uiAO+0SvHq=$oXgZ@)i?6Y?`gp_0Uj1;z1rvR>l07|W~ZIu9X1t&sOs2cNn z64LYJ5A^1VPQU)bm#FVsWkIEM#SL&m;BIRA=3pS>N?F<4L=;~nU7^DI*>d-+Q}*!l zb7#f%ZyV@=Ak{~JY{>b2zU}RFp(M_r@_q)()lh@2+v4#>m8(?;c3Gx62 zP%F!Z!hAC&wV6W^fL`0e)-oCt$>E_+-PuQ!z|#KO?xr^NIjn)Ht9}G?TT3=#n9IrJ z<21IT&A(9io~Qy9cZP2j%5P<)is7{;CMl=*j_}2c)?br(-u=Ccl)rimZ5!w0XN%Ir zaf-7xeTR!$gH&n7say;=_LUh>e}TSsh5@^NRl`{^o@mMCoc7{iOA=1JnD zYTw5m3L+)lGo~!HCh4>8n$f=_2GfL6ic0n1jAp&&r1xh7+nd9_DI4jEWF1EdyRzE! zoc9*8&>W*IXXc4)!98wVZ(8}qbh};x21E<#SCEJsRb^q>L;IM-7CNoctB=pWYLcE- z<6z!j2q`+!vf`c~7g?{b485J-%e(XO564txxqfC%Jxsd)s@Ss@r=8I>aWSUFSqTG% z=Qn!SHMP%7Z~=+5AN z?Z?FUm(JA{*XbL`AEXBF25?ht8n6oa_FO*mTdGYLxZYPpOL`KQUfdvV=E5CbOs16lyx>TkAs_OOa<^#|_GXr)1{0ZEHzK^Qy!|>edp)&N;J5Ji_)dM&!{M423+M=iFm`r8PzM^fkGkn+5G-ydpSq1m|MO7p{t} z4QhzWe;S*)*M0ZV&~OL&E}iesu}(WNbPq94K*t-@Qd3uVp7@n?00XUF==CA zennI9-$e|7)+6S0>50*GU;Ai50^j8=)YOdsTZJJHm(p%`i3Sx4CM4?UPA?xV<9b7Wk+o^fVhc+9?UJo=My; z1~-X5sUsLr

~4L1=km7v;7xkfo-7UvH{8n?VS`QU$OVGW>$HfB^)D;!(1HW0XUQ zX`Uen3@!`++)6^uU;z;- z1gt_{O+;YA**Uf`eKxVe25AiJ)ENtZQyk-Qk28_!(Sqk{j-<;xhP0$d7$sDJJzE}P z`RhtRj$zUvXogik-^Hfhy=YuOP``*^G}?b}ti9J>xht7KzePBI^hw%YM#R1l^Cu`% zMKK=%I}rAZ1YZ3RmrQuVUpJr87ak)>^}!P0+=OLS(({7O-qN@52=HixG=ys(LFO29 zZ*Ht@{L=_~UHG0!<&pvEqVD^%dBC7T-4*x7U?(YuN`D43^|5Bx1#tc`H8-()vWMdD z?{fFXJa+o=|2ba&-X6Fsmj6E!`+pDf|NCVuR{#S!7%mKi4FKW2&I28Yrw(8TJQi>6 zzixj1k3;ln5M&==X@S}rxwt4*G-F2!{hSxrPU?S9Z=g2LLLP2(Xv@_ve^lMis@yG?lZiV1HAY zndd|wZ;R=>i_T}@354s7*QoJMGeJT-F9`P;)>Ru3d_5HAzhVeG7{L*o85h7n`sLOW zoSu@~j0cQ=>Za!XC@xed2(WlCpE_ttNC%uPwlZ-U$bdpZF}s!s6c@7HfR}`{gH#Uu zmxI)QYbBW(`tvRZ;InoaH(X7mO z&Awn?#vh;ib^<)yhr^p#z%)2gsyBo#>tg`N(M;HsoLiF=NME3n0Rf0#|AK|rh`vOi zJMq6oLj$@*Ow<0ApoEa^v4dOO#{qQ>u9t&Lj?`M4^};oykIP%{9>Wb=AI6{40~2K8 zt6!cP<5e>S=7pQFgj|B5ZOBa=K;9~*0EIMgdLG({AH@SP1~p@##~}dI*${?he(wD@ zvGMV??SU?~Zup_b$UKLHMCif`F{Y=SO(@sn@~>hFE!*!!g$XY9$FadtQ?U6(f)Hrg zZq+N}I#B~9JqaeKWuiS#n~~I>{S(L@l%=!+qBRY$!P7a#&+K~l%RkPGxX8BW?b{$n zDYEy2Uvb~sZ8ARsu?y@s`8ogeEjBtzzMDWvP6c#z+nF?=C^3?BL{lCDdTgJc<&7Lk zK1|(uYYRcncwT`7qNyPIr>S%}AT|Sy5uv>H>9#QthbY1K0J5=#yitLgmAC=mpV_Sp zb1Y?f*uukDt`*VCqha4tE%`87Dxk?*m1IMY!>}?l>OJR_5M;tBcAVPvJve<(#>lL63i^xKw-AAMdA3{f&00OWl?`-GI_KHoJ^g^Q9WgV? zF7z*7TaQHy%(K84@37oai9RNsrb=RNnIVy?s2edbExT4fHQ$*AdV(D0Rbzf=#P`p{5eMP>wL-2)gc7G#cH5j<6QAPdHzW~ILo8QXlIfD z7!T6YSZ3#dCQ%aFYqhC(r26Kv+y;)Vn2d5Zvf(N2EC1LUfsCMB`h_g1$K*r2Pml2x z?_$@0HecF9z$;$Cc)>-C(qi@XFKK>`crgpm;cB(E782k2@>hNZ3&oeu#rj{=)i8bl zq&u1}w|F*a7t^w18M{>svG(6=e%;jCS!-qaV&u%qM;yi1^(8 znde>0k1L`XBAa3Kom&{7H5oN-cC$P8rU6a3%I{manEq3(>u`wkM!>gRJg{k-GMOqr zk@(h$&vf0qb-X>aQp^9gc;-V(Jvlv<|2x(EGM#xp&+M!T{s#j?IlDEHa@YN4xwne7 z13$U|3cvnS3`U&6Y_Y}C*CgtF4bYiKTNoo+fmDv%Wpb%0!{o4Z|Ctc7(PQr5J7zsi ziQj*8s0w(LF~;~lZ%Cwn8i+-8%&W-@a=GiX5u4iapD}bOo)n17-z<7Y z%zgr(S&Jb|$UEU^Q{J-rZ@GUUll4REPhdDd-rH@LDjQY*A%0=A?dGfv8p&yTi%Ldh z#cT>HWiRRO$v=9ny7#*N#-%sU(BTp-tH`j3pM!;G;x0gNH!QC)LoUBdHxQR?>WwU> zo_*d!F&qB&_T@@fzzxIzbtZ79`#Q9%wri`yi)a-NI&fN4Nupd-(S!Y`OEk=^K)>Wi}J9oTAHp+Tnzy1mq@+jxOsFN8er7 zI%g*Ys{sP=%wxCof;$a2-*QOE(>0@jIMr~vR^iG<3@^{-u*9*t>|LFVpl(ggfh56I zsO|`WS@}uJB^dBP-nD&|k~b!AUijlF^e$$7J>Ek!POO_U>Pn6xl%*)f{nAWn{Y=Z< zD85!aX9d#>#;~p|M^*a#Z~K|*9hcb3C|mZ^j$PD!+3>YF z^zBR&gLCHv>9I((>#p5rM(OdWa@!o1P7+c%ZRRl%Gum>|_K0H&s#f;<0t7B#9>G@P zAY)%(VH?gicIoUL6vfBzhjYSU*0EqivrE2F{smOswYxqF7~Yl-L~WnCLg;0a1vF-^ z6sF_mjoL}HnJk2eFXCA%wT82BmnO@oH;coHs&=QZbXhlJ1RDCS{P`Utd<@4N0TK z2ek1(?eM9_Q%sAL*7k!`zGJ$0ljXry@YqEx1&EP2NuvK|K8ME_Zm*BA4LouUW)cbF zq>l?2X|{t8H+rimnw~6~+Ysfo4PT^F&ir}(Vcx(=i}j5O$NZ}<&nlMko(eOlHytv1 zMBOdyq*H3bM_&x6841J2fk{5vZ#6CM^=*dMHw6nQ=0z}{7r*<`XlG9L9eGUMzai~62KA3pDkl4EnPOm4-1N=I`b|{jrJwIkDI|B@VGdt59qG*m zO-)qu>rrw58a10|b%6r@hA^~b|80C^SHz5N{;-0<>J?U5Hmt>$>otGF$swc}g@4bLxE+@)8276{Ru$gJJv}wk>m$rQ3 zf`I8|yNTYN#opMj8BFz8XD*pee=y&w@>54aXqiPjW_5pdY85-@Fk5L-8Z7&XN%hr!TRV-@Jf4!gF~*cX%>q9! zWy6v2aV~SKab;v6V#B7C@8>ErY_H3&Y!v|VUToidFFh9$Z`*rBMX&7IA^(GyYhRs7 zPT^o6(V(qOzUu;y==ilpR2N)2m_dHZ&ix`1OnXmN8YrkOC}caWo+Dp!Gny%$wrJ367@zwFv;6I?FU^v^O&|hIPIYzj7bqhfS*{3KtCwHBz<0 z_N2!OK3G2YENNVsyqXr2>YD#F(IENP0qkl~m1x24w3de~L2Fte z`-Pg0<;^qASc|GTP_i&CYZuka7Pqk+ugOM-Oz9<8(VpQo;QAszSId&c? z4C13wFKP1~_%Sh4HtTOowa7aJ>brf9j`NxPZ7&AMgq3&qaWTaQe{V-Z_H8hgbRRzh zM|oMG^O~yRb!k!q+sDbe7uPNA}=neu>hZ+vly{ar;J5@_5r}M~`Ylz)M+F zPU5$GJ?Ny#NvHxt3vRNN3xRABxL>Lx9=1|}vx+^0#Y&4scfn3u$yRR}B<+dC<;m$n zr!Sho=)zO`n_m$ux!8s1|b>^+q@zbT1v!BW**T<;@a4$P5 zDtSz6beu{oty+kK;)#{;@UCFSK_Ls*3$=IAI|wTe|ELQ z)te$)&@2ZI-jU=NK~9lkIX~ySW&1qu=Sq5eXf-PMIvU-Jb-0`LZr+5)crJ1|h9WGsQ}8w$ncUG?`^R2Qo|L@eY)c29ts4%bj^N6?tJ?Eh1)MTn{4brTB1d zLEIf4{5cRO0K3T6xrxav9Q)BW!uKW@Zt2&FwDRkGP{e?3$mqM|?fg1UN z39Uis6=Z9mrX30pLJ1DB{^0@ikSMVeT&cuP=QDMT0nIrv+VeYkInh>i-WAExUaPHF zU6($J=3ML-YABWaN(tsru7Sbl6jl`$f_E;EU7$ ztoM48)o1?*l>kfsAE#=7<}bif?WC~qFaw4GlXHI#?0lA$^vX%$pRB1~xF461&hsG= zlTRG@#ynNyytTod=YnHfR!JTH`S0;TFR;YojML^DACm|Q`7dQstU5!`CWg^C_Exx< zROQEbfwhv-s{2fLn{4hKP93-6C8h#^h=t|I2-6?wT$3hlU;=)fdLERe?^wD#*VS<9 z@L29~U8twAzP;)Y8)a#)4a8wyUud@X%f}?f_@-ftWj&c>rNFCUWo7S%KjrF2tWL(x z$0hkEvQiI%O|w$o#lJ7c*67DHeUX6PmYERW9lN-T-AyzwFck{hPO07L%Xt4}&kG8zFapM>*5YSg;&G*b-A(-4C2BdlWXhw+KK|4`Vx|t2YayTg0ZPFya@s5oAbCl+Q1JlW`3T(s--ToHxq`41!zJDSWS(6J{O35jO^A= zT_0#0Y)ef=0dn^;L%(_D3)f4?gK0p7H11gA;$bqQJM))&dIIeDSmZUVs##B3y&MOtw%K(|dMO}IFO>GfW;J$pgO)_JYDu7o#3 z;`jkg6A33M6=O_eA*MyFLQ@=GKY>7JODP~#5TO$|r1kd!kF{@kV&fKsh5bXm$P;Pi zmCj}hK*z(5)NW56tiO(k5+rb9J!WL8B5=~lOVhS=Hpu?A;JifsK4WMZ$7ai*!2!Y&kgB|I{OetGjTVP|4y+AGjjXc;F6N%Ys0`< zGQ~Y5Xrn+q3nw5tepX>FKQ0FZvjf=(y<;?><&QLQJrKa@a9>roJRM%75;4;xWm?_? z)L)0Pt->4z#tI-6IpMH2cELC>`^yeNy(An^^SZPo3mGMwqEbD0F3yt5yyzXa`mxnE z;+DtO63vNfY^$}^M=qz=NpmgBUmL*8L^WT5Xt;Eubco{0eApzH*Ss z%c1`fw6O0390nXdTc=d!@Ft}6P@bqml|x+B^K^T6Xl6RFVLDb`Z*n06W4s)+l<}i+ z(cg(Z7s40Qj4@iQvIfqd6(h@M#T-uvagJPG;4DOU1NwD5Sq0%Z$DRRM_+HSWi*gTv z517<<$LC;{;alG&rro=FySc&xy?#I@y1SPrAi$hf-7?skS_0fGlO7O(=3Xl`KhlpR zXpbuzx7X~an&x7J6rPnXrb_}@P^{no!_!%ZHTj2qTS7uc*I+O}ln|tw(WL?cl8UrQ zmkMl@N+Y8rl?LgS?j8sN(%mJaW2C@)@AtgV^AE@2Kgi(T?)!UPpY!}6D^O2*=w^n5 zqbaiYoJ>RiYGLDJ&_{;!tLfM!%J>xPCDIcTRH4+`wDwgUUHyFNO$u5aX=e4p*I<@0 zib0o}tkL(w1Mp^p_yL9agX2fw?Zn>fpn-S5K4Zc=Ubg79?p<7jH%=q=!R%jU%qL^0&puq(*`alJ?%yYB?~>{D zjrFZs^t&1#f;g5dOxtEhpnVe_5BYsf7;+@oYGm0GHht&CEq@@Mn@CpCB@+)GbKsFk zFxrKp=nmf*-Bh`cvZ@ALm2S%~=D3|$DR#wSH!{_kv~$V!S6=7Zstkq7G~{Na{G{Y? za&Fpf%aaKuM$i*HeC97gL!W9{I^88YTUiFPaopuE7+nNa(&BXp-;Xjn2&$x_=lE*2 zD0N@!p)2PPg1rUMKW5sDNyNG6$CNYXK^&k77zpI}`Zd}heVlN-r2Vt+>#<8l>*2ct zcS~xcJlvMSM2I^QgOW2#9ZTAmd>-zaPlW!85RHalw0w=senz#^jvL9&f$O9i&M}7K zG~yizi!m7>D893-GideDobj2)@P>2TjIj)<2YV#eLq#36$-FPS5V_EWAVBQ-u0j^M zu%oPP-^1!MUnh*IXs`2-_bO|^hXBnXxgqJHTBn-nT*sfkI4~D`)6-%-UI~&>t-Ib< z+(WjjF`fV^=^3kdrU8T zRPid`5Z6!%X2Q5^B5$?2l3sj)?rOn!EanS0YW-+^JyuMFPw*xov9@XbF@~vmNM-1m zm92kxjc93K<$HVcCJo-<4eULz=u?N-VWPtJr5N36X6{g9@O043WYUC@AtP#GKw435 zlJG?3wh{q89x>P3PDk~i$}SVDkn9*6{(JN9|5*p1J@@njA_Vgi{Vcz{uVB}}`FeJ$ zNViAQ$F*4c@Jx5IdVlP*P~FBH-amcvzBhBT&2&CCjwL=O-i9W1k#X4QL-j2IZ*xTzx z6CeQtZY>UVbsrozcm4KpCR!%7`CvU)JKpPVpS=#IJh}eyIrTj4tT-BzNx#im7pG5e zZAPHydoE0tNH=v_5;pk;ZMLrgXAe)1c?P?>8Kc;ibYe+-WvY@?i^KZivxIA#r#I&2sXPe10eDFD513~AtRsH|faWexUB+SY@Hphkt z^)R~}NknU^U%bx0%v_AT+`seNMb`UjGa@4SQGQkzi+GCIdbf&Q`8vl6ic@A?pRjMD z%&fY_#sOpBIXYZN`Nv4crElP)%wR3{{EM95k&~I37E0N4{?uf(<=Sws{2!_z?5l`?T6u=FDfm z{%_g)OSA7zEOu9=Y^455Jl^yK*_%z5tn#~+L$dD3{(M1aFi#b=7A?P5Q-0h&gNm6& zzJNzl(-?oScYANIMUvpX2$BX2O)ej55c%AVAH0Or-JL~w-)x3GBEcCDiV!zyT1kBM}E3B=_%Ej%r3Bom1>B;dp_!-!M2(zI#;KcmZC1z31E^( zo3F01vHG%IKF}Eu9Itfm`*NGwc|*wLDvtnG#HKC4aCgEx@2c=$5us(Sw|XPt#deFr z+FLDvMgCXw{l}?=8u=?Zm3meiMxbI&x zJ*PTbQd~^sUQ_dOw46)CkJ&MeO*gzTg1#KBx&k+c>_K$wZZOBkCZU--J*?WPNg=x& zcwcIg&j6!0OjyOwzFz0-2Fr+;x~{=ylPOM0SJ zTJQWQGDysQG@)j(c~_Xz4ZDHcw8Myj`xKM~MTg9iYomY@=373LV44X*F~N7_d9Y24 zO`wgrH~U<-%~1dH0`fUNlEOtaLI-JwtcAaY>+XGf!s~wohkE;6q#0Q~`dq>2qO$DchAPR385!HpdN7O91bq>lQbU<(gA;d%`toGD;-Q1D@4?TMzVMHiA5 z)pFGH=YU`WZpHiOCVLAHwR&X9`{p%;p!GzDOkj)yXzQW1gW2S#iefi*ouK(OFW1Kv z^m8sJzAL!H*)Q4N!^(rb!UD{I_+mNOBLbl6d!K=qeqp4+}52P-cNHAzCsS<&gB z#}hkGM;~gI=-k3?Ls3={S3+0O%>82a9*MGweYQ7MxlVelaf=q0m!iwSEWJs!P_#}Ad4$J&);C@820 z%nGNV`bu;Mx}ay28W6JpdMi#7T&94_KBdCrBu>{6(F8HCi$VO|Zjz!JBlhGLZ`&wX zmU!=OqCB$fKHOa&KkFh@9nxA0Rp#=KQTS3LSiba3L&R0rm3rKc`zK5}lmNQd6bh0G z^;s3Ye(I8PiHDoFRd(6m*2{wA@Xv<*$&ko@mkXkqPGhxx z)*r7GTURu*=c{>gCTCF_KhJ=t=gLRdGs-MSVoz^9D#r{KC>U8^bgmoDzjry2%j^ya zpUtWn^9=SP+M=Hs!5chu{&Td3V}2m3mky+`1zNyGa8vJGk;$##g4R9E-Z8K%e8sE< zrbZBm69{L?q{FD^j~k64;YiW6TF{3f3DoCAhkdWf#zKk}#AbIejDb@i3(Vcu!!t%A zY08QeSmnKlH5@89y&vKUIt)6WZ#lq>3rJo$eE!m_>NNM z^9UTI4w4OZ&%Mj`_@~+hgM0JJuyTeE>M2UpbVl`zDQ*r z>q;D6nmPM9A@fQ$B|CF>Og!_K%+U3K2#b}UWhDJF+J$#GcO=9c-sowsB*wR_|M73m zv})&k&q?BGhy3OI(a%<5Ze=>$No~tBBjIJsXU7zWZATofXE=MA`M4qio#hO6e9v_Q zxIT)x@VrJgALm@Mkp>Wv{yx}zo6BBnWeiP8ZXbH`!2+EkRZF%ht{6VJ6}$o_s1*62 zO;GyJUZaOJIQi?~nnW6om^j4#G5dGQ#V&HF$kDTMS5xLtLuFw{h9kd9%Fx#jNK@n6 zvY_!H0+}swDhu&B?njy0as<{*s&gXqTveG(5+Nk|QUr3&`Fw9Lmgci~3Ea`IUdHM7 zBzoe>V%9k_p2xMzMxJrx)tZ5V#NOd?($qh7SY>Ee;s1DP+o-)BGqt&4=lbT;gzaJx zPcp13i5uOD2tJ?F*YUQ)ja5iZ{^_T}>u}wNs8WHL7xL_8x-c#wc$NsVTE?qobIU0C z!;CNEAvJy$EaZyU6S7LnMwVGMFM4)Aujg(y;nUd-A=_UABWc3C7OJPPB4i0HmJvlx zaD_5}Ns|G7pi7SU&HPP*NpyQ4B|k|Wy0*e_7WopEh+V+BBwk>?1#($@ z=s|$}C|*;qW!!;Jb-E1%FCfX1DbIAKvcIxAXT8iVB+<*%2mZ3-(=kk>^iUeFt1hqp zCnOs&@hh=mhxQ3F0$Dk89v@Ovk+tF{oasZ0x1=?vYCue z3@-gRnY9himtFUh=VfgZS+>b?O@GK+uO?YL1VY^Z+91FoX6nHLERf9HqI68}KTsHx z34N@ltwYb=ef`~N^=`oxvsU%3wf8GcX@`7W zpZ|~9Sdi>+S;TiIktEM#*^HDGzls8)UycVJOvw?^ozTM+ZI;V9Wx-|3FZcAhrL^Qa zfBNpPRGN9WZHw?3ke{A%%m>*)1`kflhkI|llDuq%9QA9$Ye=PhHrvsboaYpeVHDl1 z0u+aL#)(sg5GKleP;mlsD{|T^=^=ACSFL3C2&-am0NJjBa-eIh1#f?P)%ven^m9(9 zQH|F~J)P9iyTy)=IYOl3YJ3W${qM!d&rhp)p}i#Lra%T`VLzqw$R3p`wUhXNEpeWI zFeefQ<>R;zEI(|1S9h3?hw!k{JKbQEW{Nyh4a|EE`BeY;Hy58RW^}gJCy)76Yn+X^ z+Fs=A^SL@A?xS^!`>D>alrZ|O1;)M+^5YxOLK2Kj(v!{Cm$mK4kf@d)&ri&pb_sqw z_VMUsYZ4uT`YN+9-g8-=YYLTw;yR7;kGnS(@BpLez_6a<`Kh+bndaszpEF(y_%Rg* zW|3iJ5=lsy*=4Njk7%_)(sSa|n?}x;Y>!JPz{wa#!7PZDn$3&>c!$l9^r}L7^T6p! zJJ>&F>80abM-m$q;)c;1UgK5Dn1|qFw1LwxiX)sE9SWo|8!tB*rU$3dBj=GxD-S~! zy(4f}#V=l%5nQ7U5J*~0VyODsK;$dn_0Q%_y26!*3&p4Zi zozR|=mQgPxI+F7v8_&$oy!g@aiEooTy3^0A`&Q)v-x@E(V`joWUi^5Be|<7P8SWiCb^c&DWX^; zaqzS}Uc5*C6(0?~ibIp1gerS2?0hFhOq_=K#dpmChdNuQKKoc3dL?zjzRfKAe3mrA z)8SvCFe#}+|0E%*nLF8Rn(i`lc)GsZC(bpw*;SfXPe=Fr3J2qwjmfMJ=3VP_C`spj zSI2X!I@4YAp@x^>o0Igjcgg74qG;SRKz|Ho6w^5bzybv}_7%xLu1{!v%X!F7m6)si z#?hT->CAFQtzWg=xm{Mu^9kLrfk1k3VV9q$GdaiRr4fXrH0M3~Nhq25|WyqvAz_-J?+g2JA-%!UAo&%d zfK2*|U5z3A+Fasqs2$Qm!SyGw&y66_+@OjOoBDG%kd}*ekJ20?+4TVY>8&uC-~>@6 zK`9&mNY!Ip3^Y5+U>r&Ki6%)an9(k4OqaXw++v82I$HydHBosIH2q?(ItYf zUkQJCH%(wwehg9DzMZ$ac9~m1%im1n@0et=2IBoqh^2Vr)hgv7$4F+!xZUUyu9XeF zyZew2i9h)Wr-HE?TOP91p9dP%oj21MHsUP~c%2-uYJXt_)O7t;i_#CrgSqds)7>2y(02<7k{1;Sn+9e zgx!phJLU0S{x}`}h_MzYT8vnGD@n7fI-ir;*%^5yme_Bw2!*#~YxD9z6YiUFOi?VK25d>!r8>m%w;%X(hOH=d8SMV*$;vTr%hrBf1MYI&ZucPaMwjt zkKazT&5VujsR{@thws?=S%kgY{Ihy6nJ`&$_hss5Be^`uNg&~<#DlSxn zYL1?mfsX7DCJ@ovTutxZwztMMw6NQ}UlFyI11ZH#Q)_a8<;{7{TX_f3l&>SyzZi4x zMcSlzXVc^CNVq+nz0bAU9vIFol@M%mUM-rZU)tdXcBL0q3ACK_4Iqnm8U6PA7xky# zcb7hA>5>MMR1gbyQJQk@TJQ!dpRsW=?`bnGv~|4J%eup6Es{Du5KKZ#spJQNcJ<9~ zjJjQ9bWKQ^KEUu&1tR9msOWWm!3 zQ1^X)yF8IA#~u4ldn8^3F%OdwsEQZ29jRSJX0&c+AI&)*T;?|Dwa)RA+NPu%V$i>n7s-^*{UJVnN11xIxxP&EbI*mBZ3}v21oLfxvV_$Mva`Fm!B!oI{ z@I2;a{N2mq64(BI$S7hHX^x)X1xN!|%;1~9)03>}-qKpn+E+>hEO}Ls%PM`gOk_iz zs~kfwt?sN=nS$eCI-r$xb=j)0f)&(V(!~NfD}K}y{q zBs%=uZ|WT>fBAg+wCP@blNZs|^pQll$_&V>1LMp zOQ<7A+A^S)-9K}SmC-1OqzR3h`;%E8^KyT-#URjv;@-k2Ps7QIBIb@rp2j88wMY05 z^JKHO$v?)_t4E*PZeaQZ-bthcq7kobp1qiawAYIi?>|mg@m(*l{AL^g5q}&}s^PcV zy<8SjRI6s0aIP5=PsWemdVGFBv8x~KZg0m3r*L~+1#(*X68_alAkJ_|yNNHcC+C7Y>bl+Kx8=B2U=X1a@FU34?r zND1UxEUu`=?5;;kWX`I{yXwW^YhC?|Gm5k$qU!tX{Y=eE^zXZB+H3}PoGz72Jmr)@ zrs?kj#v@;Q&ujd1w^|;zlpoIxvNPOOsYCm2i@!Rt+G@P$r51c48S0k1a=z$^Rx(x1cwBJP7dw%5t`;rY`Ndh-x7@FqQI_@sBaD~zx_{{M9BV%DkHyv z_GHuusY%DO55H|zxs}2M62SLRW&@-8H@kT}A{NsM(hCkoe#5<0hn93nX#$v*rf#5i3BmY-TSD!n7L zYEP9KpCv2ZneB1g;oHqF{SNM&a3=A{7w;)A!5@S=_hlSENq@Y1SE7vZw7@Ht-l@=W z&)VFul6bzh88lfN*ID7H+yQDFmTAQF(|LcTQnjkJQIcLz zjS=R1^i^Ll94JWeMj?thbfqw+!B$(Gyr+IC`AH@S`Ue^1C;P*o-GnPdhdf|e2 zPd&mGDkT+pBv2|^it~vuS98^y=t{G>HxKrg2(8>Om;Zr`*;I;H%=w*vfyd@$A^EO_JdU`2n(FC8k2;;+GAr29y!=?Lm_vKQA9P;H zlhqE7V%ZF>UUlzdD>KZ(5n54~?q1oY?RCe-Z7v+`>0H%ChtRG);!mGh)Pyu|U70~W z0EOx!SUq>$%L0-BF>#h2uEyiW@|>-*hW9Bq!+LKqPHmjz1o{LGN10Ji)mvV*-uL(r zBpo0uPJG>WhOWPxuWyhnHM+4;ehhm@hS?=Rr_8*(B=B5Fk}OMZAfyduWFk}D9yOWq zy!HcNZ~;F!9fE_giSdsI;RXTV@j+3i*`&n~c+Dg+zT29~xSy zt+NWV`6?v&@i@s%cF6BSB;imdV333!K7rVqolH_>7C4QYUYf1c@k$E;G2!_P@!-Ad z@$$RUoCb%Y>~>Q?wCSmy4~Cv?G2p>Bydoi+eIfr42@ox=Y_VanwDFm4L{r@%=xmPV zH%Tr@XP<-uqWJ++-#OF0o&xpNX9Q&p$0iORF*7{9(~B*a5pJPkB)WK3cD~;~?>$Tz z=zpop_HSJ4uE2N*#-{w?l+|Tm;@8V$qtLFe9CTvH7?UF8o8a0cl}JI;gtYw}Qd0p_ zd#~k3a;ErRVfMv)mk`ioxX(vGD^r-pQd*X&{nmHJeGyf-=j$lE>SuWmFRj9bo#^Dt zXm)pV@b!jYcFUMcZ3;g5I@4ZvO=4{z*_pr@{ssHnsx3wIgiBvO-&kd0)5;r4?HM!v ztm)<*6-0oP$H$Ye)x=<>Wyw`&j^@1Q9CZ-tkIR}$GKKSZuFegMfbx$R=ALQ8oB009 z@Tpzs{oBj0vYDV6_4!^yo}x>u<7z2(sY=a8`B?oFv!5K7y z|B?&ksOHQ~ctOJ7)V8ZO3em;bjkrDD^SdHcXZOYN-k;_QL0869v;0ZIhh<;dinn-J zy;nGvJzC-zN!o_-EIDPK3mQOHw#J;zsl&D_oS<)RsI2A==9C8>kBNiOb9YDwXKr@S zPixPv_H1m`3M(ONwwKAtyq>l$$8$b;^mvYV<1q`JDU$)8&nF3{fGbS@0O>X~55STR z@`~@bl06?}n#rr-dGPbke6SpPxhmGtsIY+zaCGA?LU!JL;~4R#J9x0G$SNSQ=R2w< zATWi234%}WTX^lQ2U6+2iwm2~5l`&R;?oJ+@yR$HSj6DZM{48=%uZ~^!mW@IDAI<*(GWm^@Nl^8=F+TOqgu3 z1W7E~q8LGfR%XFSuS5>37d`~nDyc%B7YbP}wXlz#RN`(kU`EAK& zq?%|YJN|sitRy;AO|82`y+JkQ++I z;&Zv}&X&*7QqB+h{ZiliHgd0dO4$)F=qAt1uR4q-NxZMe`r(sLIu9?)1-X(FID@VN z91L3!t&M4+B>-+|hWYN6{+`@%^Ml#)!&TGe1~<98+3BvkmvL!V!ESX9_07C4x-SSi zX;j@8cwUJTQTDM$m8xw@qVu!S{pS98#|WL>oRXiOL9hHNz1#E{&ct!5np2oTyM?k- zao6V3)FS_}j2`&jS__!Qnji0}f5OVf;%!u@J-RR>E!PLUfA~WIIl3QL?4@nEb-vZv z(eQn_%fw?5HGfl-riPB)y(}vP>)$x&{cOSFw**kdzMp`P%>XalI~mfa*B#NP8Pym^ z(yOV=nZm0bkD>KNsr=Zlm(-yFcCKgN?n@yF`|{=L-Ri>{hc!eN+1;Rv&J7&n=^JpOPu_Vm_#vEHtMA!_4$6gF~@oflCL0yBs!-1N;l1?>H7_V^_O!#kAxQLZD95Z^^O zr_6&|0bOArbvuGs3jH*-Kd<7GR4nK9vu06^ww7w*@BN^QDUl%H&MW;0G_ z>FuaDkve1_lcR;ETJ~Zb$*zr>=q9zrjqHw)EHyqldPzz*6!e)kPj(p zQp$?HdKYTpO}|A1gF5zcPy#Q^Bdj3XkdnR;Vpx8D;PrvIXtx^BxJ1+Nr03P98Wiy+ zHGExRhiyjM>FuK>OL6d$;yP(aNaZI-0(q(PHwuI~uONE1kn1NQqECzfGBl(qsq?SE zCy$7Rmo*SNB137AhTVubDBp2@%OqfU#I|Z^W+Y-!UIYvMAm#R27lIpZ>k|*_0Z_^Qati!c$Tv(WeMYE$t3ZaYC^r-Hda z!bu{VBG>X`OC~Gr!F*kVR$-J+9th=i>gK$z<80L+=H7ihe;o9u?fh?x`O!}7N6Z_h z?!Ve}x|vN(d#fxeI2ltiIb91`bW5Gt^4h02NX+L6GY!{`he zxo8(_^`6j5IPB3wRhqE;H3V9-G_M#R=i(m2#U9EA{<;_CqYDk=CS?Ag9pOO3_7M57 zvN~ynt&`b6UT}Da^B#FA9+^bO;H+?~yHGpNFQI|CS2AyG#0c~)3jyJvEJjtLkyX1` z9`3&zLBH_mrR3A-zd&@lk^qL=%_A7}{wF+#;wk>C^>$W)J#z?KZy$8yAcR2))CNcd zMt!&I8+QRMx_bl0ma=K|8Pmd4Fu)!4r2tB}S%;JV81ce_T|#RbNx}twhD0KF8-r z9lx#gVf@<%+CSeBuZfQUU^$w{|0cr2UKh9qIOb~SZ&e}3_Dz&2V|6_*vJ5_M)xP|y zkCYkhwpnAKfOf&>>I%$EY6nJ&QLWh~TRJSGs=9)ufEp5sFDBg>CqPGNd-n@Vn;)nMuR&C3T~bi*9H47-T4 zd-_2udaYi2&MRsUmOcV6gN1tKo8^FCR;a!&*V@7zphGvPRjz=B^4>2Nt_nHMILMt79675o`=qJB878R=QU8ZXIv+S; z=^w7Hz3&Go8Tz*m4^Z<|#z$PtJaojT69(A~&vO##7X)q?1tiG#Nz}pAPuJ8Bp8LnV zpY8cT&$D1eH-zw+?BYnHzo~6)OYXCMskB)AP9jm{pYyLbPORj8=+`5V&_6~YU6ARu@|Uj$vcDMQF1~(csU{wNCExz1g6XJT4VX8Wg%Jn z8=#Sa2b+@Fj-wTSuP$^b<#q!|Npc)pE;h!?mwmHXlbvc_ii*&N9(Im)pFy0ebO!dd zCFJmo57-nV&mkba`=1DF#o0h;Enl=Q`Qy($6mMvReiuI-v~`D?ieWXQ*Abo(c7iY) zCjODKpCD0+=s~O@^c^6D&{v8LJqDB}4URzIT0f{7htFhVLdOs8Ksz~b4O1kiy{ z^x37G8bC~}oyNaeby*xHPLkn$k11wOUglE`Hey02!n2EIlhMm1I%P>&O!)Xkcs|%v zIZy;rTNu6EG*ij2jXd86DiYlNN^_37Bz2xU6>2@%RARZ*mNC82Y_GtthUN3~87s=S7;HXjEDWS0Y}p@lrw(KZY6XmpZQBsbRSC36Z8 z5ryvEp9~F8*%y-ha$C8gF1ltsvD&tdam?|w`RMP_v}lHD6rk5c+hyO@(lWmGysY?11=(HoiZQ%KVIJ@w@ykYg ze7LUnsA5Rm{vV{^KQ!fb2%y%8)BpBLynP^)kO26V)xbYmtmY7ndnK{~P4vP1cwYqv z>Y!o6-4ZmODmemZhO#+Lh8d^J7|8~}jdI%AV%649m>D|NCjU^QH?e8~Q|hUooqW(K zuwn5BW~7R@8mqwRgfsP{`oCx3*S>c03(^TEGXSnx`1!fSa@Ll_RU!F(JSzl1UKI6U z6~E)Q8w|@})eRtT-u{RKkfhUz`u30$>=SKQ@|0!NcM;QF->dM9%QEy~lyfU#*gcO@;K@nEQ`sH!oj}k-(7YU^{Go>HCzdk*?oiT36$q=BLn6V+^o>BOQ z_(nkwFJJ>MtUn2`%6W4od`fKJa@=^M`e$_FQXD5l{%IWh z$lq+(n-fkat+-)>E@7wP%m0DdfCX&~kiodOIv7Vx@Q^=tLA-4t*gM%t4wWvxbD(;I zb>fIddIEzK`%v#=Am`~OO9OJT#Kl2*onz%$Mdp<#MhCs9(2enx$JZo)MArU|kSejj z(X-c-WmbTk!{_ho!2xe2sis$<@_IbDigGx%4=9-6-wrgEuG{*9CL>`7aoXbO0naY3 z$ezV7N|bv;mAT5pTyfO6qk^!jyCY*B0f!yp6%gEj*`q$X#U7HfjF z)p9usy!|755f=IEX^JH!W27$R!E*3hinLd=QmXaDirMXwCpcT~+s}L{(k?Sis_a}$ z4w;4lRY#JxY1Wq(Hu>_);Tn9Bbr!Mh8kg8~~29iR!0 zKj-}d)~{=ZknhrX0tt2Hz|$ZXV6{!i72xB(`t*FzW^;>^Dgxg+A-IawDLqH6*mlwV z5K^HcLnRK^o5H8J)}Y1%FQI!jm>&Cn9DnNaJ;KA(&htz+L~JE+@w@i@UB07*dGf*O z)R}RZKrnTe7ejIBE6J<)UuRu(o1?iUrCp6|VwBS-lIsaJo3;q%($a=0HL0dtcpL>x zgMn(O>mu~^QP#pMIdsVWH6P1v(~*^~S;+!?ghJyL!trPkS7KI;arc$~zVXa|ACbTp z)gEARhODI%h{v)0PP7_t(d#N+qHM13A1=Oiy^x~bsdpEm6rZOc{P)V@qstnCNg#Lj z0$dfCRLVBgCgK~C@gC65jQu+x5>T2S^e1h$6N>`4ab= z`0!I`<&ST5i6?>~v=h+<93wOD384P&^x3Abz9OSG_GUDes1#c;@^&N1jUE% zthlO@Wz3`2_~!a~ppU4ZUbI79H+@!xU(IuxgvM$Y@!9p$1BMfjZ!@S(L$xe>L&w>~ zLcG`*^R0@Qt^vxuWUJbDZTg$`z0 z!pS`+ji87JH)!g!dq)yKhFdh%K8^h{SU@^2N8Pq+iV< zt9EAeyk_)oFb>JGr8n1aztAl!?=a%V937$9-qvvI1kyP1FuSw-j~tiC!j(f$gAGZ+ z1OAG2v^m@{DvI6#dX(G?mhs48<%}@~;%s#v?t+3dXf12zJ!T(O!Dn5})W@mrfg=Kz zQ$TMPh>#A4JQ}oAJOTNm7>O9Q;8t#`Tz3J-Fz%c5X)aFo^v`^^2J01GBr$)1-Xw3@ zgyJT4?Xt@?JBuv~OaFJTwnB!B{{eaEEA&VgZbIQ^sqMH*6IuH+hIydA!c!*l&clg5 zK#TA~g(i)&39(aT0`EQNku&%c(>fswlZDIfU=K;_jQ#-rb{*O4 zT$nOVk?b@PhaYwJ-T4O2`~TY?0#5lqovFpW$lAZ4#TdmY^EK*c;3*UEKcuK?Wq~wO zVu1{4aQ`k|{PMhk=Szo@YUm94$Xon=^3Ie@M>Ci8=J_)O*D4*zoS@j}fGj!<4#-%) zb#y{Kr|8&dHuoU3+qjC<(* z^~nApx0#=zTA$TJcK3}&gEREAnUa4>@s%unj>60uEb%=tioaLJ*>BNryoU4Qy|H!< z+Tv+n74N8;-~ayu^d+GObz>muc=b@@??bcfRZ1MjreQ$tFs1s%h$O+hdd*qbm7zA5 zAFex?w2ITFowAcJF>0o9tnJpsl`A!)2;nwPe#dTJV#Jo)umecJ#>=5vRdN;zAI*EU z-i}e1J-DzQJGLERA(LE-Mz1Ssf72IS4=a}^(m9Q}N1~}*vE{PTUPT+DdXI9HMo_V! zA>EXBQ!^S6+x|u%wuxjljlSQr{BrXv`TzUZ1*9ZI;W1KRQ%e$yWfkFwY!<-OEm1E% z+Cohfo9NGdUr2aDV1Wo1ROfdv!O998!0t0&y#3(=v~3jMCihw1>$jz-?5G&oR)IDN zCgz2SOwB+(TCWBv@L~(#w#O)R1I2(g4KzkDO@mf22g8XIitwPoy&EA)s>w{524~$m z4j6_ZaKRI8MXdA5mYpn60&?wo1Jr)#^T%cm@-r(q5pyGB#haE%MK?mW$g)4n zvwhWEQ%J0ae^68=!TNywiJY$#{9UNH@|JXIP@7Aq|`+b zT7H2`;)*#GRRm9duag60Q~%n;*);fMk7A<6yd$rih+-*Mp9tQm1*F(OH%Af^yk)=j z_D0ls(RMe5g2Nxn7P`BUhL0l&cSZox(fbG(HWSmDV<=F0VA9p~_?0=_lJ8%J$*tM) z1sp?!zH*t50KBpZh^AC7TeLWo4nN#4jl?qE=w;|`NFa+TNN>}Oy`Z#|^^Z=LGyKs_G z+9xx&*Rr0i0aBxrMB4xJB9nA*34j;5@d=MCU*UTyCoq_Eo0U;(JEq`ZU-^Of#8ZDL+j|FhyPTw9YUdz67KqT;c z5AZ6+riOA``~?1`;gS0#N$8Y%*M<`Q?jImvY@t@(1DxIx97_5SZEX)rL9 z8`-gNr(%Iaa06=}wJ-j%#ipI;>wR{dx;Xpxqk6ly&<*AwKQA&jTjfCHS3t&nkh^LZIHNqc{kx_&VAQFvI*;cBM<$Kc)sEi)G-C zsR4-g&suC6Pz~zS6~T5Jr6fTPWsT)(g|>r1v@+nQkF|=F%xy?= z0(jMR+A_EbEnhLO(oXpgfcVGHe2_&1`c?S`7)WsOdku%9zdV8&V707LIRQ(8V^meS z>Og_X-F2YDqUfT$BYL&2W*Sh97E6itcn-P)1tH_(K3x~AdsVCngLc0*vFdyGRXe4O z7&YsPhVY@II)Hzcr5SrMM_V*m=SI5uoYR1S?bk>jy(!$H9y`N3LywKIZ_;imez$bU zS0B~JM_DjYXRHNitGv0y){C5p20gp>SRS|Pez-~XW~622&ljbcTP(0Y`fe=zVQI;` zAI@>@7oi-3>vcS(by>MN&r=Lv8YfefjkQ8*;sc7Ke=swxdb_W|@M{5cK-ImMg9?Gt zz;(I3@BekiOs+iYvL?!JQ^NYcnwixf`AR)shC3>sAcC`qJ&yQDt>anT3+BffTXLQ0 zOySEjvPY}1zJk&?O-U2!kw4G*`B~)^uQeQms+SvpC&@h|^j;@FgjH0I(3F>1f2; z2hk#envK|Uv+P&(VM~Rk7=0&Lb6r$^$bUQT>LQnh)A7YOYJQK0nt`XY2=zZMlL3C1 zT=8bR|0@PyIi)e~pgLY{2Ug&Q2}YJ-Y|NZfp*vJ!kFN??sQGevTh3S93rX2iIKSMp zbQDYh|3Z$_eO$wW%L9Y~x(eSdepAG$1tizSDX+R~`LIKVuBp}Z)1u`y*=klc14V4E;qKI??GM&F!Z$dP1 zCX7J#y6Gvg@@z8Jdi>}JqBkW@2zRKvB@4p94-p+X_@6y@!ht&FgFoQ@It2?tsEa*4$o~ zuDD+j|Nh%4VYeWRx+)sqTo?IJ`L&BeL(NFa>2A-3uhgvIgFsRNGQ^81@CrN*w`0!=nrw5yupcjIPBK#D9i0#+>mPyR=58r$@dLxJWhgCiU zZKy+W*iN2}*^%f#vdu(8%*OsKfX4p>n)u`_2TL2+=ThJ+Vb(<@HIK0C&Wp>*R@1x} zf;Gmb#1D`b{Xf3@b@y(%wYRxY;KjubTc=|mL%cRX!6ISwd1+quz(T;?ej&b7k{oy( z4C!m9*sNYVi+wIt(6sC1Qlz@CK*+48LO>zQ3;+|q=4V8@gG0jCyqjZ;LbGbuz_Olbd}_?C>tzx2wa>j`x2 z>eoE!In<4%ZM!Qnt4Lw{Z&j51d@Ikdnh^^WQ~0y`oR>fL!(5d$HYalZxv^?neWNiK zcu)Q+1wkif=?47YaSdLp!Fxh;Ra4a0m*=3D-$2FW}azE z^WRmi{aIWyV?Q2kxUbBo_=H-Qh?+(kH)@{T9D`akbbwQ2wJfHvGg^w{1+&B1B-l zLtoWtzUkFib;BRAQ+Xku^J7kJJA8P2epsYcL?T6C}tji5^Nmeve1FM7Mp4_#ga zr!ookJUYe7SP7Ik_(ZFER3T0$(X0ifK(FvKOr~k*Yh%X>71}GNeye9Jn_)jliQcn; zf^SqL{-?Iw;{VZfmH|z^Z4_5T8X2L02|-$<1tdq8FdC%0M}sJcAT`<{ zT}pR~!03LTNB{2!^_#?=?Y^&bopXK+FrcxIHnrcR2aYD{w|{%sfr`q7viGB2d?Lu|yUg?Fx<}Av-Q8=wU39tMq1sZyCCSs3 zBp!f}YGVQHINAReHEi^#gnH&h8%hB=C+B-M?ib--IS|Ce{UBu5Yc84G`VK~vS3>Az z>QaFbj_p?0n&*YEF4d+X>W7%})q5U_Dqmm8e|1&iA+t|tM}PLD@s=O~sULeHxlou7u9{*6D|HLPn!8%k#`Ps;#j=YsO(;*n@aAwJR zk>hboE4Mx>7%826t$A^g<=MvLn3FWiTj}%VP3A=_9l+TdFgWWWaGV8)U9Yi1)6M+)##Br~p*Kpo6lQKxv&>{1A`3 zgEDDgov?BlMvrs3;X|O`T_tp7s(NsbXIA#Q^BaUc7#r>z7PN;{3F(zrea^gUNnd{+ zc!1WABWewYTG&SUW+mXff15^a@i@YUj+4fi;#hAo1b@Dq+_I*wacy%b3T9}>EjwY# zgN9`jJV*&HF+C@)c`EXIFjDrTN;|(pVxkgpa0V^ z2Ak9lxdpBs#(Y5t_tyRh!bv709j~w=M$ZHxMQrBzqlA2i-KnavF80aRou(Wdfi2O0 z&k3Y`Bh88T{cWow8pYyq2239Z_5ld3!7VkUYB-Y`nd#UQJj!SS`~1jFQUd)@Xr2Wt z4g)4;P;@E@fi~6~DT~$=<`3`$B*p#QL>zifEY8K;$W)r8B#0@duH}%R^J|_Jljaia z;m9JDThN)*>w@2!L>S|b#fH25g0jmrkWa(!G(&taEAMZ-$X*S0vJeCNo)bydb*fRt z;%f4yordnIL#A{!rYj0faen-~%ZBskx<(SEIq<^fPDx&xXSZHjJ}T5tlixFQs~o74 zh?mV7);%6pYOH;Szx7N%LFlM5MiFB;P`bdl(;2z|NjW4AQYt@L93txSjkoeOpqtPe zPZRt^9Nno2h2Sl0zuJ1{Yp3E{mPgZ70r{aP5h1KLW}BaPOx!v7Oeu!ER*!xzNzb_9 zSZq#fD>PS$=X0!1Y^SN#$yBabC2NTBq2)>czh{&AL+O)ySs$s(;=ZKe0rKiXYDglu zhqV8?80vPH%5n6HS@X>#`}^UYot7jA_&wbcv)4dH_uTkG@*hp*$evrlm*BR^XuRj$ z=Ozxtpu<&d9$l=`Tlr{v0rF6LZj7|_504;QV4Z?(36UGu=xY#Zz4abxs*7!2^&6P? z##7%KX1AH ztKs+)N!0ODTK+v%L%>{xOR5_WJtbg9Sj%k^VW zZ>ftAood9_QZj_#cj^E;5GQjpg=XFeSR+LN>I>8~mgP^>@qGk;p`R518BCn-4b`!fwp3W)3>Cj$wx%T|8mi*14+ zBSLw4&0v^3+(tYC(`5t;N^qB`xbt7F9S$j>T3g@N_W|k~0Ux?WE;9v)G4(8ye^`g1 z2kkwA#kn9p4x}}|+ii!(I2t&P>y)47y7`VhAJ!(R`Dom#5%A>vSr5Cj$3>yuz@WL; zwBWGdg9sJY6@fYMaB*Ht^Q`8>!fKPuR(>7EuesgoZg!;}^zIPx{HUCAyV55{iyI}F zDI^_9*}*4EOEDJpdI=la@nIm!vOQc>QwnWrK&C;vnnmNN1dz1h_C z{CBl+VP3XsSUh=t%(7}A)GIZ6$-9Tx!r+$v1#xX+j|erl#3tTc*}YKNhf~^DWghE{ z2BlV`@hdtebwtSWaG$A&;;8Gq3N>X02+7y6G@os%E!8uFmfEnEVH85r@S}eA)2iE4 z$T+KbJCzGm>|uCd2;I)2_=ryZR_tj}HuXC7mj3LiF`cUsd(JZ49{mg_XuHG8ZQDze znQH2W@k~AATh-X2HNm^}H5rT5yu~R8*4m;*YEa_C%?^jfhuy86mkB%7|GZXC9^&%#Y#1XN;<&BXBXhHA(kJ|utjk@NjuWAR2n{A{^fDmr% z%l@bT!t-ks-%OL)dRp$sD?wgZcg*;K@66m52{w-bbz)&-rL>65R0PiiPpVqRLJic~p;he%u4DE^*KR6n=LJNp z$mDwN>W|0YDn2|-IWxRSHfF?oRe5PzZB=_x=c@exVW#e0$&25k^>ZG8odON;8r)2G zOXV`wCV~z_d1$}Z52)V$_nG}8TQ$jf1N>od&C708lksxkuyIaw>W?nv3F}E^>Sez{ z?6Z9>F)f>2b)-UDJ`37>cuhypgRX__%Bte$qdeO)6n(!>dgj=PJKe^cVV`)~>cv7r z%ybxC8shi%Jkw`;TJ9)q6FTbiq#s+}*4ZP}088TEX;Bl}uVSMA7nM$F$b7|5M@tyV z-Qp>LNFNq5=3$<0ICtRO+y22H2YoW{RK(u`WAAuAV;%(Q0MZl? z_obCE@6>-N6eTg27|HDd=s)9|7Ri0IZ*9ja@QMz@q%O@G00vSS%hUhwnZv0jLCL*GLw?&mQ!U`k>vOWFiVxOuz+H^TawxJ7&q40}7FsPJzj)=d z-?a)7egIj{;&J#pxG#f=+3#T@xX%3Ln$Wh1wg^_nl)&>QUq=-pfav5;cj}HVkn#s8 zJ(X7nphDAD|9?S_IS7|n8!RF~gQKk%34iBnQyidkg^mMcTK0ijS8x!mQ`>E~R^|^g zZj(lxS9J(Aop@&-0}A$guXk&bB+!%2hj!5kzO2wK{X-5 zjOx93>=l{-T{wlnN6c-}mp7iBvb6O|Ar0)3}EaUP5@gOQJwXLV4|wq(x9yT34j4k+_&{C2bm>c ze`#6IU$7=E16WOI_sFO{T>5j=xXXY@F$nS=|Ge-y=gR&iz|-F5z2d1`Pt;at0~;o7 z7t}EZ__Ft-(#c`;TguvPHQvY#;zPm@xGj^7gr1|JxWLq6TX!3*29c1h2A$Xe==nY0AF1d(w zr+)#hqPDbCt_XlbR#gEE+is}%FE0W3cV9P^qqtKtc6_KW?6rPF*m>Z;7oviT599358&4TN>{Lk^dzD5mA~qMI~;7sHoAeD?QIRb=BjO zZ^n-{i*t+*pfr{*9qPunK1>B+(*b;tx+_>bYl?VX3)mhi$v>-*U0dy1cRNug%a*GA zi>7E@#zDDQpY8UY7}y$L&dX#2+fsC>P*a|9=hQg>gnGGyeZGNWuYMK#Ikxcuozmrl z&F}St8h+@6zO@WT<39VcRG+i{qt{3G&$JPXLy~&NFw17<&}6Vns?In|Z~AfpTdJhI#hMP8TQ>-{#6HaY1(@kT6#B8_BndHZ`I+k5 zZtwpS)!ryDU)f3qBk8R$d1fdPU<+|h$==W4}0+J*gDZhEp9XTWVqK66|u6B-JRAxs$~NSTQM7mP-0fwqvLz=Z4FsUvyn9;olN8y!D%?l z`l|;SKBC1fGGCvsqwsv=tc#=2g@Yu5i6$n)Z?iyjGxPX5^{NP9WHK5_YxCojL ze~D4yGE}uh$7`s4&UHyv91=N1W9oOU?9B z08!Yx{1)P#Coex7M;>R6;&@SQ$wkf>hil6pq_=tR)ak*1t+`$^BhD>Ml5ASAFt<`K z;}V^3dRTrj*|a85H#c7J&W^=cVXH5Z$Bn)pu>BR_xo!nn_bdmc%K9w97;WiHtWBlB>p$-|{x%QoOqgtNW z5L!5XlYrOg@Aow-0nkU4p9e&BSm~`Hf^bR{-uk1$pBfF6BUEp{njP6fCF@Rkx8k+t z<@4qa`0^<)fZ38{U%Hu;++Ix;dMj18Jvex;4jg5#8iN8ZOIw*AA7%Gh!I&T=N{Zj! zK?cSct4WWPX98SE^Hhz19$0qU*~8$WJnAW>9H)EP+%q3nGV}{2eAdlhNHq!j6wfsV zX>fCy24%ftYdzOe4~o1b#iT-68AKh2N|tlt0=pGU9p+KTLz}tB9eFeIkK5yHj0dWH z&JFZ7__D&3UmGOPt7+ecMnF|h891JXv9eT;FkG^RHSPUe%u=Xb{DY8?b;@}=+V{_2 zlFI5ipz%IQm*thJO*eJ$7g(0-ewK{5Sx~?bB9aH~DYPfQ*F9(GX#-mxlf%WRC#7{*YU z(GZQ=Mh-Yixy{~JKZizFInQ2CBB{{ZK7a%d)9sxEPN>bt3vl)V&N_jD`C5vLy(aq9 z{cIkAUf7tL6#TZIN5yjI3e1mEIg8hVu?MUma%kGD&&W&KG^qg)xcsNiSz3 zvE{98@{@MQ;-jsX^p75!fPI-pZqKq;c8qqt^s)?!atJ0(lGLU;YxCmjbx)2bQ;O!t zUeStNgHp3+iJzx7;EOaVTh&uStE@P4Io$uh5yu+T_ngqwrYrj-8v=>G>y=W-Hh^3@ zbGEG}6&t+9*`^XAGq4=EFH9YB7t4yfh3>b|Y4$K`IbcyF)tQ@c4!`Nn?~|-upJFd^ zf-nB$>-2CQpRjk8Rv~<28TD8lzpe+AUf2W;Iaz+nxe6m;r#A{x>bM#BCD0hoJ0L(Y zHIqm?ngwT#f~~J1JM4nUL%-4zcwEjsTKHGO~1;EZN6hRJr1ehNUd+exabJ$E-B zQBI!LZQb#a8#X){*cGPQj~HU&4v~Oa!+0IO*RuNRi0mxC3WnVVdNuyuS5N)H-^({&RFxttXIy#6pv>VcPxCmolq<$T+hnZhlk43Ft^1dnlW6+T zumcjFbEpHxU2cf6=vMDp(Nh9Grl(iJt?s(&FuvK4l&E=mJ?7NXggi~-%~QL_Nj3)N ze)@}@hYv?%4(Z(FFL`J}^`aN})z*01<&@hm!3;+iChTI`j-K)*@`Nrq>fuoP1B0 zYclNqa^Rv;fT=Q(mFGp4GbdJnD-Of8)o&u~_>hl`gCVzRS(cn3LFp933Qa`$fvv~) zr7XX?@U~F`)m}mG(N7IwmARvsRNYd}p%5mb_0MR^btMM~I?}2UfIl^~`Z^2T|nv2xhCA&kHB_N-HlmLkX|G zONP+*gzMzD6mEO_-*sSmMEFJg!J+dK?(oxwI_eUfkKI zqDV#Izdn4bZa@p>xD#Z`5ZBgD-P7 zg>HGZNdvjChr?Fd8lFFJS{i}1{+JEB61B6ufFv$g6w$@O>%}y4RKyh#FgDrF@I_&F z)L^8FhAnr65KnhJ<005sOJmT$7<&?;HvW-L1LCIG6t7`Zx~$6*!$c2fY#+TVE(*W9 zb+wY9!3CxlX75Q|?meF2A0!J3^Ln5>`Al5bPm9_3ffE-DO&;SSKAg{)qZ+_~1rN{P zspypZF_Mk`As2+y&>YQ1b$(>gx2_kAR-ihYL9KEV;cMIA2qTV5q#V4#TEKJWKN}VR zhflS?Rl05@MGy((@;*lpFUn;X%3VIc!Q{`68_zkUI+9_9%FE1+xv@))g|)m9jlX`w z^vG9+MiiSUWs#m|pFZA1Mar=5>D-}rpzETz;8hV+YWBLK<(0{Kf$O2+Xa%^&d;HLb zN_K>5{4bcbT7E#|Qxo^Sof=#mF=9MVoiN+Nl=CR$ zLE&IUy>M*&#xp_*i!vUiZnFr)Y1?~q_@t3CAWFGg?9Tm`ljE5QQ~BvhNdz|!ZAPF3 zMU*Wq2|^h{PCY0VSi|a-rkCzc)=%>?#fvJnZ#LRcYHpgI19{B{Fm#$nurCdx zgQZ=2n`v)>sFu(`k8(U|8Pr zlL*kmhW)lQTf((bMYF&AZlz$K?Kj&%2{@JYvT4@6*Ha$sQl2ryhzzVx3=AySyVLf5 zK0nS7{or^bWMLvM(@FTg3!8? zdQaVMmWG&eJq?Q*M#8zH8%FDQyLx{W4Z4peLTf)vt#c-><{~(_rL=F=N~xj z&-5483V?F@Hlf%M&Tg52e$k&5Ad^wF#n&Vt8+RiaguV=ymgFDFqt)2%Q?{kY)UUnDlRK- z{9j5WMyP=092g40x*c zBkd~6{=1G-`JY|Pu7-Sm%YjXEQv9j6J(g?Qp~>^tyN)i@GC53BnbNM)VJ9ZZ!T4DW zfWO8&G{i-VpPL{M3y0etr zCHdqgKF%WOUdD2ASsX%k`Il~epOzh_0h038V}pOMm+AvJYw`8M?rI31Bge_if%LCE zrpROgJzsm++Vg`Xg$L>7;$8#$`vf3S0GyO$z#ex%Q zBreBFwWyns3|b1SYA-CQKcd7*n?_Ym*(y&v9^7rq}$J2TJ4sOi-3al4AcJ%QRfRtC(+p z*vU=Y?aqdo>Jzseo4(<(uyfX%zVt2XNiIt9R870#b-DLjLNc{`o`!w8+x#2?*uwyS zf_7O7cFpam4)*G%PoTb}Lng9Wn1HHpIjU@ojdoUz`$)%l1d7YQ04sMng}Kx;Zx1!_ zr~p>7-qDPUMS6Fi{YaAv$Ky)G6SB@U*m_nyK(u%`u9#(h(8dsu9LsB1 zAA|{x#2(&}@xgrq4XFv7jI`tU_X7;S>oGb>X}!Ms1H89(S;?<1FdcYon0H_%FaWkCV@nGOK;7Bud+;-Tmai3T%DN0lw(HZAC+>KDPMfTPDTs}ZUF zo<(I+*cjmd^nsXT(WKB4@aFhJZfc}&gbFX8fQWqkI0ZX68fUrwIL)bJ840`VSexGe zxV+*?94Z(F6x06fS-Y7F5R7KV`qgv8m`5`@QZG{MQa^8yj<(%K%%eBH>gwKzAyU3L zvVX43&=reqopo{R+rIgdQ#mg=a^QPWW!OEpyYlOX(?s&Z?qT#iIRHd{{4T9~p|WXt zXZmwndIM4GQOCaoLGPZnuf<#A}z5im`qFtJ!cQQ zj~7MS59Dukfu0>V>6`BW<5O|uKA$3aHbqIO7_mS4eL&LtVyu*7CYQsdfA7nu9x&Dg^2c=xGB=p2x4Ny^kxfhYt69N( zX{FM7^6@tyhS(_b2Ou3)?wE}yOPtJnPF9n!GwG>ly*^*fkK`&l0zSR$Caw~7U~t=} z#Ic%#P4@GIB$GqJojjukm+#-spBDqbc{|Q9ABU#>?m81f?3yJ&mG=|buK0`s<{RU? zG&X;=o~xhlW~ST#A8je^^R4uVMnK$}^sSB5G4p(B1PI;&)m!ZiM^{44n`-0w<1B@< zok(DN-UU$Z^`?~#n-}hKvrap<`a0k<6xyhB!@jH7`W;Fft!4Uw;bjz{vl@XVN)N4{ zKC<00OZx+&8;sW_zdZnH-03m*ojw7_he3ajgo@$6agK-2jBv(#_iA;;%W&;JPP63n>v$-IJ!zw+8F64)hpZOMdi)e`I$K|WhI z{mK6AJf8L%Fox*{>wAGR!u^-E_k**LK0bZxF?ho+wWDT|}@~=}#jiF~#Q8x59A{T)4vM zDia_&%6OGGq!DfqLT1TqZB69xOP<79$W4YHaCrjtW0qgoQjX&_&P;EW*9YGdEm@P3 zAn{R!En6yNG7f$1t#cv2cucj+nIHLtxXnjH9C|F{KMx?cP{1GEyAnqws#5`;%9qcp z&qJ@-xiLSd(To9Y3gBSQbM*D-*t<`|-_7pVuH9sk;fn3xj|;$j_-sBjxa`(o8J@k~&rV%}|62^MbOaBvp+-C=EY_)JCAbVzVHy$5SK zdGW_briX+~2v+>vyWRc=Wc11Q02*57&?cKK$}^h{gwk)lC{8v}H=r$Q4ZBf_8{x8T#)@Xpo!3-PcR= z?YX^w_1UHab-{M5fLTl$og%#A=_bEoyY!$IyKY2sD(Ywc?~r?zOYb{eq$M`+N1zin z7P4xjcVXd>*xL85nJT`d&mLCM%yFMf#;ee2t|JQSjz=DBeQyB18|~^C#=;VE^Gx?d zqBCgi_d7C5-~PQokap#UKh+*dk$!G=4VUTDeHaH4jp81^?xGHIK5G*4h_QpgUd9~c zAcX^#4f*_jlxd-$*{vvXZ7x+0Q&qJ3LKn{it}_BHMIRx_XXLO28RRW1Wm0a6RkSVM z9gBx3MQX^+`xM;ZB>GQ7viO7MAhTf=>3{VuVv?pS%P+->}lW)7vxWCafSXuyQ%afsa zYwrGUYB9RDdy+K0+f;pd+$e?`-95I;ykE{ov)yzIG}D)3pUQWlUa0n>#D`1HtiNDfR+mEhtP5I@f~ z5h2g(7F|NnrWx}&Ow~39B{mU_o7C1f@~$fUvJZwo!wcz&uv_5UpJh9vRF%V4iBVVu-yCWIK_H0h?h-^ zNatbr2ETy1--*Szt&_1o2V_GGu(@$ZA9xDzJP5PkDe&Q0u3HrDW@b!={)u*wf^#7B z;d01rX^4In;M=>3!?t|Wwk;lv9I|@B7XfwX=_TJU9G`Tuv^B@yjYgvGVBKeIk}3S? zpAiwfI8bElX~(KZs*brlPUORq9k#1#vw6R^P~ye;m7kuVTWSB_R2SQ8M(aI$61qY$ zUj%s&yb-EeGMP7JA-tlHL!S$>uZUI^em|fZq@QCPD1CbbRNc}V%Ob8zRNA8g>ds$x zIM24+zEYUAy>ldU$S?;{n}TJII#1Px%lk_07lM zEz?*Afdl0nD4oZ%P!q>??76!p4i-y5l^_r+*-SjeeEoaJn|SmDa#V6dV>spnjPZfO zi5_<;X69B7$TrrA`N&2Db=vtKj7EBP^O%R@$>#|Qw2R=m0&7RXUfa>uJshmfHb!Img2f&;n%gQloLI(KhAxpPG2vCFEh2 zaBcnKf9$M%XqYW6PYg>$G-ZqwaUPP(L>{rg4)y%4S=n!ET~gTS$17c?FlVzSG?L+m zv6j+Ya=nc_AaTnK(=7D$)FMW8+Sbs;zxilm_TO*)SH`y+7ypL6l={S7qrKRhDcd6Z z+O_3A)SyAG_@c8*3T!Rg$;J%9w_a;Adi?P82HN!f&FK?&B|NzVv)vt!Y9ZXF=FnsgipWI_>{4j!bt0fEC5Af;gh$m?iSeGxo{A!jSrqxrW0grZV`h={vYAdz zjR`H|!8mLLu%$F#PsdstiQ`qbM{Q+|c1O(q=Ao=%ei*P98e1=CZP@bzB#UEKsw)W! zGe=V1I7;p0J6h|ly8GBUx;=_D{~$~bRf*GE)hlk&_tY(Qv1CCgt2Bh03~2@p!Ui4 zatj~sl24*cEh4*7IPB*S;$IlK6^9dI%V?a1JEC}-fhD0O7y@5v#cLWF$q3$=Sl~w!Ih3Ffxi4exCOr)D>UkW=!?(t@h_;5?H!11eAzJ>_S;N zJ3c~9LP%|R6Dh|CH2M}$)$^3P7!iWpM4^@ayw^b#Z3pen1dc~YLmA_5Zl%;COiQP; z&QY+kJD=I)haWSWpQ(wg(23SJ?%w}CR_VJMT+@F_zA<@% zlJ>Og7Dk5Z!37yMUUr3+K%1Ed2tsR(UZJ-!K8=t#m%{dygLCs}JvHlm%3XY)W^LH{ zk+!)5#XF_u5#lKP{f{vAr;(5@s>qZG!TQ)Qt4|BF4I~bD%w|v-cJP|*MyUGZ1ZmV( z@*cw=+V=Y!TFxpK*fgLNl+!DIg;LnE^gXLTzjyn*_TtUo!#LHq;h^fGug<@r{Bop#|uUYRb$Ur;Ye9k2A=dMg3Wu~ z(96Aa8(C`5>=z^5@hy}`nf@VLh{V$4+hy~Kb@8&&qaI3LL@vf|N`(x%Zg-o$N3eNx zO3pb>{g>*kY46QeLg`G-X|-Ggx2E*`xGF)X11egwvH4c3{qk#>l+z6*Dbc-t#zpD{ zruvlSeq?@%^MR_Frt{!F)|}xxN8x5d08aEzLTg`HjS<^rpBK3S^eaF|>yvbAK{paU zU{{gkjnr|a6yojT&#d;{v0DX0oxqKcEpIDIK%Q!!4HQBW0ZqMm*L@F(Jt?#Uq^+1q zMqhg-9rn!|d++F^_|iI<&hT7izC*ED0z%jCY1*9gvEr@i>p#y#{`>kokzy1maEkh1D~7 z6^pUY+RoX9eJC}q#EKiKA?&2Z+5nx z4~x-wxpiG)mkqEHk(UpXDc+M={-DCeMh8NVL2(NpP=_vj2g4S9;82@FOG`Kf#K@vf z+78>qRBy!g+U{Vt06xGCyK3**?XpjEUj!!f3&40T-A~4UkK6T(@8H!cx!#=a@l7{f zpOMGBiTlsj;ScF7tCR*spCCcKBP=?}L42eq2)DEdq%UI?Gy_frtQOdi{_4QrY+KXS zjw83&pRX2w{Us-$4F~(!Ye=8|Iar`YaYa~q)28VvycP|^2h z!ks?E-sXjULD^T5BQacT@|Pq zQWB0mJ9>NGW39lk1JIp?bOLvdryT*uqAUD>(djd12+}FX3q&ykNaW+8HA&m_e;+Y8 z!TXc`m&HE2K^Z6wuI5T{$Fuh+FK(|_!0Sb)z2^TT(-QA}3^h<%dt66E#XhZQyG+yr z#Ck#C_LfgU>-ACf5npT|Xy?lG+A3WI=G@A8TpSeDN)SF5D=49%1SVf;pM1Uon9LOy zeAJlO0v@Q0Nx(!>j`xI-*L}yOo6;%~RHizr(mN>JW5#t2E3tgCY#|Vw=O9SB9EWcX z!l}q$9nE6FTWMAsW!2C{nU~%I=s6Up%ppoo0F`_~BnMC?cI2jY4IKoax6A%>JT6O} z%$NYz@YcRq?uLfTtF@c4O>u5x%f(MKBL_*a^|T}ADlq=*{Zs#!pe}dC`u{VzAux21 zRLt5ALg-BVR`y;9%UD~iQ48?E>S@Wxb%L11)${FYZm>)7ihZF#s2r5TuA<@Z_PfaS z7~O!FUkN)#T#K9 zA|U_y{2Wd1+f%AXD;&xBMSlkevj|Ydix74>Yjq5coYI3J)Y!lZRR^%#CmUa2>y|lJ zh<~w|7NKU}S#)X=t=~V63w>91XI+bh(_xMh-PM<$WGH#aeOoq3Ms(}f*?PKN)#Hd$ zBbwUzy1MhvHbSdzw42lQhFCdSCX_o?-+&yjoi~o{6w%p4Ow4D2*bksZlcR3zxn;v@ za=Gu6BWm|#ZRZK_*h;Q+$u8K|v>^x#Tx* zLu)>M{^bJ|lk?{dfCaVO%=b^j`a~*O6z2LB=n4aEdbSI|R>g!1G+GL%tBYg)F&yB8At?&7edrsHg|@1h(Z0Mu#gA6r=|VkD+_E;7;aV z_iCPIQ?zcO%2+$e6wBVhi_D}(^F23s5R}))t$>pn1z<1@@8TNEY~`4JoAcTppKt6* zKOT#@U+O8$IMNUc;L#rjcRpr7I1&d?_uabL(rY!ac&|L&P@BNyP5A|V4H|0Q=fFtd85|uRQixK4iv#NAa(X#W8&OZ-GQ6750p#KGp-k!5QPHJ zu7-xVBU0_cU2*Vj(U%uSYp|UFFL4x8oS|9&D4V>EDNl3(a%Ss%&OZvq5yA9<4G6HX z0u!$4Qdfrtel>=#RJP{o*3;c9ZIyUmj`0P*q8rxTdTDqj1#DN}GVetpL*i5QLyt`wqJQtR3UbF z{?`0$4G(pBh(Gs?@Eo0Ye0DE*+Lgu}iSFZ;su=Ey^II32e|ZBoIIMz9=iekpIbj*vc5Vj?WwLv&)H`UeC&6gOnbA50j693>vxUKkZPT1bn%& z2*RivFjxHWI_hc?I0Gz!&0p0{ZcI2HXlYlAt*O3;!zv!1>vyG*`<%<+sivK5H&}c0 zo@ae%63!MZa~O9GxTy3L2;9_Pn8`nm^bvv^g;WB)A>Sh2c9N1Wf-8&km?lWN;H>ND z<9B;Flms^ZV7&S58+0XMAy|p0!}x{#N+XBp&^oVAPC^a$m>lTA)&k+mS_1APSvZCgk(36<&?Zy_)- z$G3DSsh0$ASRi?1{1#9s&TN1&)GW5Hhc05lrl3=*-|~KU927m=1R138#}V5 ziDRXKM#agQW8ao_xi#`|oQ{aPors%STd_8N(*WH~)#b{u{^s<+;0$bFkifcZ0T(c6 zVxq(_k66(Kwhp;)Q)n!D%ioxCB+P3Cm+>Yhh1`qGoR!^9o?5jh+-lUIt{EKomRi0b4YxY{)2ylS?bh`)2KfRRD#Zq zVgB42u#qN#-rs1Aj8=|MLj`>WEO|<(7ZwQlR5JonTKg;OR<|x}ZDu$ffkJ3K8;v{( z7PDgtWgxU4$4d1$_@kUPL@AgBLvDgM>Uq#pm-mjc#QOn|PH84x$eU1-=WW}8>!I(6 zT`87gEM`vBb>fmY738V1vBkyV7*Q^~5}`q!ohoKtF%FO>I6o$pTdp4*PyEpssRp)r ziVZV?r);F)QuOWaZ%;&$@l(#Vb=!kVb=7W-vb;~m;ofkX`)nw!z+4HZSewpEpaGZ+$xq7}>_lR&qPM)4tcc7mybVwlG z@83f$o9Z(Ix+3ayEjPlhaJUG}jS0o?!Eu@`sR=@>4h_>*lZJ-+Qx4%|QKmugQyOze2+3HM3z4pR z5897%>t{T@zfm~t>-loHLWJ7UKLeU>7OO3${jTU|QX`6pG9q3-p1@_v z+#7mPX`HSE)ET0tw#tStvMx71Z#|_cW#4~u7&t)$x2>dO)y6r0dj9tTY#&>cIuX~@ z+xWXz;I3+_yxa#i4N1v{x%Lf6bGKj1-zn&d=@FQ zPQ1l^`d;?I_skds3SwdB^u5xJm=RSnj7H`p7H2@v$X}qX3t08rP6ij5yrfZy8o`>i z5CRGV!f3<{3VZN_$$P&a?-q8c_nSw zye3dxn#~QBHc`3E{QEGLB7IM!H2==ZpSjPi&VEc*vAc-d#-Kw9b6yyKLRl0?!ADH- zz1XCFfeB?KYgOpiM?u*JmP+CTSb1#)1S;j5`dke{2t3B|ZqK?8;YsShJ92k?#pdyY zr(60p=?KL!aKsR?`ZY>znu=m_8L6XGcAaC{lg)qJbf}3llcdM&hECdf$dx)1DYQK) z1_)eb%oT|LEX`ov%DBQ2M8InSD<1>LX+>4~ZK58Oo>+3pxP-eGZ>2(p0kr!C4a|dU zby!`p6&N#0c3@LB#p8myES0stflBF(X!0xebf(% z6)0nLs7v|;&`@?+7{Mfuw__QRY>I}aRBLA0x}|C?3! zoCeM|rTT=_FYFrj*KQJR#JG%%Yr69-hkKZNe|tX3Q(=shlZlJ_;(4!yky>9y{s)$# zP)B@8n_*BMyHRLeDWkdg&%s2@izlM6*R@|C$sxbKVT~kjhr1c~h^c?n=hdb_6OMXO zq!5^AGdHOxMiM`cE3*Lpsp3FSB`YS!e0p3ws9UYY{RN50WUc3?_&j3v2;Z}BFIlff zlq34b&o=>lxmN>`VOq1vENe9uChPH`Xp%~bQ;hO^9u@jba?oz$zQf=txk(7cvcFrEu`lyN?s(2_Qok$X zQPnm4aR|k}Rc(%CTHUv{x`E;>xOxc1)id91ATUhEM5{T#J~*W*Au=EmF5L7caau&} zm)4sjd%BDCk!6oLdNh+mt!{2R`4+KRQO3}IvcAnmOD~uP`R0}(m1S( zpXczyu!!v{)C;99W`qI5kga50+9xq}qtf*oi(SdK-(_XTfsTQ<0?FvfHff?phzk$2 z3jLLLo0XG{Ws?}xY)0Z~y*8RBTXW$7K`)4J$J5HYEQo zl7oxt1G82sbtfV-ClYp*YCg|X>eMOTIeZW2s~U1VC~0{Xo1bjzXKuIBo!ctjH)Ut{ z8iUn&=o}9dBT$+ig5xSlaAEu6{Nh{3NZpA~YA69sk{m4gWub?G(;u7Xv40YZzq4!` z(6Zh2%UD*V#+WlJJ7Z~sq>g04~Pg? zVVU~mvhVQ@r~e4GU|aURDob$~Q%fDvv-JIx;bz-(U8x}-YCbxG*!@}X%F%dCg$%v> zsrzV@!U%u0#cZ2FeUm+7uU0DuJ%QO?-8|CLU<~*!x~sI^KeqhT5IM4)oEjycPdfXU z++VQ!Q|lXMIEHz=%Xy)MTasHFR#$e5m6A)b#xkB;Sn5a%4lfe~2Yf9|M>;ngwa+KR zOp01t_ASpZ#5zWX77Ip+)-nV+$Lp;gy!bsfde?7YLP3vMyG1C})rTbbVb6I`KuNz$->FV|i${Ge62*t0?DkRTn5H?% zKY7xa4d-ov%%Yd+ZiGR3$6oZn2;w47U%b=L#h?*wprLypj zG}zuVf_jnS{g!bm8<$#Fn+W;Ch%xhPN0?2{I)-dm6CyQM+R{xLC}-qeH_W( zUnM<|*a&*cBlh}d$zi8UPH}?Y$>3qiWUK1U!7}9tmsAF4zj#L?X>=Th@!KycaU;pr zLW5-gBkHWfqUyf4FQE)l11Lz(&`5`Lcej!vr8EdgHw-ce2q>M>BGL%bf=D;gN_Th1 zyXX5n&+q+{i;I|Z_St9cdwuSEc}dX!IZ7ZKng)Vc$I6wp3iJ-M9#9FLcxu1io#6_j z_O_Ml0DW4 z`$vj89u!{cQZ*H*CMp~iUy zxawXzLUUy#%l~!*@GoKGNE9nXQi9O$W6qJD+cO@Yyk71@U7H!9x`MkaX^h87uUZAM zRdLsj%#~r#wG^;`+u~3=3HaF`h@Ye~3i$z7cAnmg>1OMjr3y^V70nWhaqArtTk)>B zZ-&&oh4F;_`r}IQ+dt;Cy7xu}df*P=PoF6NdGyEwwpi^_Emv;LdkhoG7m`k^zi)dy zS>1*2rHLNYk3Jwd@a^9}B-t_7W0o^4LgO26;_0C1y%9Pva_e(*$k)gBvEWHUD!jN+ zI`g+xof7D+7JaOgw^9IGR^dNxBWSbfhCdW!?ZGCol1Zf9<-xsj;a^Dex{<&H7(1*Or(N+&vgTxx&{0 zUuP{ma-KEN3<41kI7IIPkx^av^p9(0ClREIB*SiWphG^xnLUVE6^8%cbHi!xChGFL zW_>vTS1s|+)$W_+ZJMROUg{FoEme~#ysLW|O4#2$8y`>?%N5Ud_cfL|;R(yCO1Y!r z2r2LB&V^lol;RkC!MVUHV3Es>e`d&n3jM3y0xtXs-3^K9mW+U#bDQLs31mJf$E8ge zm3t?)^1!}GF74UcG)KEiGNYy>eHTLR> zh31TCkhN#tKlI?AhYPxP6@#<v5--VXx1tCBu6Av1oi_W&&=nkHAaf{V^0}y{%-zf?FQ;324;sHu)Gj)-E4# zNP;Wv)sOKhZ8x0ecMiyOV2R*F*)>vt|J=p#Zv7I}*f4lA^cgOtAeT=wAC`kMW<5YU zRw(ZWN%}}PWTe)4?9QlJp$D~_VlfT;1e%xSmNUo^t5&Jl{cq_^o2`{;txq=l#X5TL z1C*r>rgIRUC z+Z^Ct08iO_?6sbkIBZjpp5Q@O{<6X$h#|E~CA`=xoF0e0N>li1@26`rh&N+l3aAB& z|1j{Vr_8p`07QBn6y$wMjDDQls$z=yEVa28(DA$k!^gWEziXUk|L7U@5oywA#QBb# zv_*hizzNwj3i~pt5{3Giv+f95vphTF(y#tR?o}2IMAk%(6CWmW)ck5#)m>r2gmDPp zvO;He5cg;EUTCGW{-$g(-D4*C7kxG~mBmVG!lr{mxi#{;{CevC6wBwCgh5$G2cXT^ zS%|rBtw;T_n|`z{ZE3ur$LR#i5W!(9lguda7J=^HGw1ZOg4iH4o4)6}pixxv9K0=y z&dmeu2_q9G`!DR*dyS%xGkp)bCYExmonM6kAp~|?Pu=^x(RnRGJXt2DUe=&qi^a;< zy%%0`yf#EPfVRtGVFWnL5peTUOQlRle{#T#l`{LV1ilShNoU;{d(MZR&w|Bnc~kZN ztJvmj66IFDm>-BXWN?u<`pA6#i}c0P@ynau9N@XIpOh+M(4TELyD8RL%O(4sp+4?M!R?#nfME$F~gA~9x6Q?QzCt$GBtcp zYxd;#rzx>ogQhVY;sf0e{I4&l#*a?*kslQ-4T;?YdkJZv&h+_2r?UY8JCQV3n4xGG z_bd;pLEEMP#3?Wm3u0>e%=FV`)Xe((Oo6}#o=Lxr!h#BG*wVept+8Swj*vFmHZY^Z zy|S&x6BKz_s^T#wmXu1P8Fi@WyQ5y-fu-FT9n4^;^XXrYRn1(GqbEEbvWH4OT?Yzm z&+?Vg^UiE%VyPo+LV90lVr0A(esFQWxA}c^TQ&lTtJl?u;dGRrL3D71%q+?#WN$~W zFSN}ZcIQGjY`+1h$OdoB4h>JZnJ{Up{f~wecvC=v(c@%wxz50>#*YNurj5p8>URLb9_Y{b9`>=dmKEO^(5!S`rAB~W z0s{`2?0o?;v`%j$Fy<`Puo!O}MdlcUSB=FuESBN-2>u2O_V@dPml?(ISz@x@7SQzh zh)R#}-8o;)99Xm<4#wP%5bKRS)-D>bew4yPVDgG{d5EjBY9 z4-tU}sy3KYZoB>9_fGbM`etahsI*D=`f62zrnL48mR%(C*#EC^ez$`%Y&a~_|KrWg zPT5gGVpFHcaqqBI_mPA|hIsM!r8k8h(JaFcK8CU0pNsI1*4w=Aa94}R^SP@Qvp?1% z!x6-|nMBz5LIVQ@Wb&VM0PtrNk`5k1d4?q37u6QA{F1!*njbYw-evXSg;|BGOMG z^Won=-L|VDxcF%?ou!)#16HbuFxeK+cJan3iu?(q$>o*>PXHtheu6ZwxO(dGc!zqs z)ETWj_*`x_pk(UJ#{M-Nbp=@G$E7NR9(MPJM2~;#xM~}qV``AQ!Ll!Ur-MEiT=Zth zen^m{gfo9Oa)ePo2LiS+$1`tukw zvLAs@suLsObiyL~t$_ha;oqi{9VcTbC5W{f0_c2x@KJ1&8xFJyF-Ft$lygw=H!ifA zgYL_zHuMelRuNn(XGmjW90XGH+nuh5O;QgeJ4e011GZYT$R2w79siv1O0yH;`e=N> z|D;k>9W$L&HHZf_ndsyhTooJ503g+so-ORNPh@Fwn;>^aCF`)sL=m1Np7joF_Fp7K z`5_#pUs3LPd>Z%(H2NFFf9Z~)iPIjMY{?sXdk8COo)6}Z2cDJvdeC2fm(U#?}Uc&oz84_dWSN0I?r?(qa z0wOgQ?xvDEINmL8RKMYXy)t4(J=yVxX#FeNHn9=%-AbQFH#P$?&-iD7d(n(;L|b3& zPBWJBR@nYI&479^lBS7_Tljjrk8`B7)RXD&`B_2XZo^1^MD)4T)Ly`=?kusOk|@;m z*38A5lwJCwHFHMH7{{8y+PO>ZvlWXkem0jDo7nkdBm^rcCVd|*I0}=P(KhIgEZ1Hk z?og1RIUB@lKN4QI_jzvl)2yO!R*q0~9Qyb{8=-B><}yg6Rzt<(^t1m2nRF3lXfu!K z`ZmU}HmE8bDcf`W{9X=tV|#mD?`?r}f&%ceO!~u7`am{4F@oo1S{puXQaLd{5*rh_ zAf}6#oB3%EB%$*AtWr9+5l$Y;Kf*H$7W4Zua8+S(KCS;lxJ-TNgqij|Pd5>#VU9jI z*0gT)Ps-#Mi-Y(+#N?j-6Xcg?i_ru1lIvLY(4dKQy?5V!jDc*0%)b-H&u`RVMO&_P zaIzIGWTf|VmEZ8lLOqG2M6up-f9BN@ee#E-ed$nI`0MJU>X{`PZ_wIHRsQen0M2;k zXL>oqthbL+O6pH@jyh>1R9yW6zErhqyi)Apyvbau7&+Y_fr}BN2^*_QUBsy5RzV)b zGuLWDrGwF=?q2m7nSyBRfqBv!`FEj=o<`Bu)tHu3T6k@bhDK|=naAO$$C{nO(h+xv zpF!^TJ=eh=r|X3H@4LSS^^EW&Z#Iudko!9%#>LK*@_f4xa8Gc6+R2&_8=T<%mDJ$ee9r zQv+d$=bu-z_)91=VKUu4y5X^G_;tsEWrV2L;n+B(gC}ug@RSGt^Nj}`SHi~etCD}D z4AeE*-0#PFkvH4SC3wC6t3^nody7{i{+Ygc-O)!mpFE-FTN+1-B*8%djUF)a1r>xE zQ@2`qX2U+stf?Tw5je##2 zOw@AmCQMu1P4ajyP(ylNl~6mCt(;z~eV%*_S-x>-t7RM{RQccYP1~ z01Ib>2(PfOd^nvbJHk$p`7!qAJ(6tXUJ|Mxs$kXnI{23M%>(X0&mhQjVfzj*gD94l z1HN3KlxVEM#}VWm3_1Gp#R%U=?inm_u8YStiVUcTlQb2Kc?NX|MIouJ&Zk>ci*Tm# zSHG~dnQ>0@ffwwm_*nQeVxM;EpcX1Oq4PbQzF~@0gt5G|HbyXhHHN=0=&m0ySS_`c z%i?B9t!OM5E?VL&gfCSQ)z;yYS%}O~ZkT$Ylb3&$tT1x5*a^RLQOMaE@;EE)oG3Uu zvI0SV4JP5pbiUt&P_)Af%Y5nD;T}ktgBR{h8;>ZaC!d7*k%#_a-qM`3!nWLGz;t}j z5c*Z_kcqOZrTT(3ENU;?WtIg#EnuKY|+hcDB~IxbN1oV)0m$QU+si zo1+eK(!uQSu$gB*sN6GJkCzsV71Rw@o9(ii$7_79h-6`pRdBE+u=!(^={Kw{vK{Ba zV-qL%a9(KJ(Mc*}ijJEtawi1Lzog_ycY?7nz)OcKBDkaI{cak6A z>(Rq<3Uwl*R&yt-V2$kHBgsriZ^aN3WxrG`jz zBS^@cmN{4zOPA6_HI*kq#ECIH3p_6gN_3(%;Cu~26OxUhgmG?oAMEVoz0_@k&=s~! zDcYzE7@zIQ!qC?e(}NM1li~LY86WTco_`5rVVfo^b&r~C_8NmKAcZ?C?It6UEtT>T zeIa#6L!J<6dp}SjEyd7H%U7c9-aQ$?Y7IPSdjL1OkdiH{k96rzwrJJwTF+K@b?_7F zc*Vd{>|)=sb5Q{Vgr$S_pG_BC98>i7)}x!fFrHw|@VKkcN$RKVzF+v8>mQ7t zr9sATZsksYbH|C!?b+M5I4`T=urA9hQhSe0`ahwYy|3lnJ;w%1+uGb$Ex!XAPstPEvTa#VA1b=?2{b!6cBa13KeS=8=bHlx+`8c);)k{UT9A zVY)vrsCh79*%;2q*KQ#9F&Biv3i%{et=tr2!o&3+nJcf#|DUQx6%k9#pvWA z3Px4%d3JX4?Na_7A;LLUtn7b~Dp>Wf?p@NbqnY@Ds;8Yl=&D)~;F&AiDL%FP5fVfi zlt%asUq~7$7P_Sd*}ItQ(<};TaP*8#DwEtayZQTiOTVW{@wzSHGRV`skC-dd|6<*D zVj-#KJ^>?k%<^R6OM(pjwznUUg3!-*XSB*Ib^g`s0``6-(v3*WP-NU34F|YyB!8K< zw5iPOPaAt)t^r|jh%7k}sroCbv&0yy(Pp#)#udR<2~bsPs&Wlg0~%>Ho$t@oDMNkt z$(JK2A>>z@yo*v57HVim+V3i!b6Yf@E{vZc9Y*{8m`(-Q<}S9dO~89ujR>S;As#Ee z0shgg29hr=`7R+)GS3N7aKb&`Ex|?q&{hs8PJ^Zwp{r1~Q&7sK9m;91-dtZ=Ic3{= z3Sy&aS0mV;(t?SnU#;$6CcnsB`7*;>)F`I&-{bC|n#X5*RI`3M5RkERd0o)OIrCf~ zLyVov>Xf^Agf^pqHG3rN{B@6%X2W$t2%1!^N4A*hrw>JADtlj^hszOu#FqQ8bSE}5 z`1zNt7cMW$&JjdD8$no@PFVAX$npl7bUYB8@bNgmdDK+LPE#?`8M4oEu2uIK>HvQv z8(op#8q<`h=!6sO?FORis z-9-sO`<1$iO?jwy?k`g6LyyYIK zCfF^df3k)Dp9p*MQvst{DZtB5(R(KzZu8zCUm2%YNX^i+WXEQOtnNf*Qj)YYd3bc* zK|-79+?H;RY#(r#d05n*rfCPRd!HrmgckjtvaO}|q=r2|o$+xx>Bq)Ie@^@oi`&b= zo^{3~!}mX}cx8V|A}oK^PxghjUDXeX<5j=<`b^jGx#A-v{K>siT^91l1Z^l zfCpwT-u%w-_zMlNy6nZT`aW73!}#7ay{mOxYJybJ{ISajlYKZHfis>Gv!^?`ST#5W7l`@X-Yu<&iZOgHqpgzKeNu z1ZXBVM*q7m$h`$YFx>QzzXT=gOrhRn24?cDn1NxPfVYdQ@mUUT20ek7+2tUJvjCj; zL|3DjU#4QfSHa9&FLiWQCwUd9d0F@4qFgY&=KH$prSwePT~cGNX|q^45*y)Zo~0(# zS#ub5Y~%x?fIvEx1Z)e8U2+!QD*HLikZ3&ohF=q}b+(HsGY#dTbtW2Yze^2*Gy!rf z>`*l%e?G%9EtbfYIyMK?BxNvi$w7DlN#{a4`vVbF`*AJ#NALFFp@R0jyylJ7$nd;S zVS0BCNw-HvaocJ__fzU`(B*7O*;-~SEsk!fxCocQ$?o$rm$T1D2dOXeE&4ANE;dq! z)(d+2VxAdz*WEtWi|Y2y{&Q>Q+cUp&W-Zm|GP=i8HnuyrkwbX>iSUhLe;jbmNkq`5 zIyHG2T0}iLnC=Jji5Y6>$ksr8@^Q9xYU3El8eL93r$DQy0tDB~fjE?y>SK?ZK~ejn zi4^}QoyGZbq6W&3ug*0^d0z>*)*X1T9US$@9lDc04cs^`;q9ZC<2PVz@5|i>i_d|^ zoYG{2OMG&u&9yFf*+=!D%QqOO1}}xUZi(%L+zU_Mm?v)B zj?00YlU|sHhx;Y79I^7@su9*LC-f-OWf)V}NB9!&Db)$Z@>Ic}dK$mf4Db2Fqju0= z9C((>qQ?7cj?b-z(5Bn*_O!l%HPS*lE)~e_U`}rOq4elP_LM7 z^PR9w5H!AfEzjxD9P*M{f41ELMaLgL(C;V!6PY+_76YuSzs36!3en$(ePJA&4!|Ik zUYrj}Vx_B+tM5KuA1NsOw%Z!r2rdtAI>5k_J>x8XJ=E*<`@WoD0h`D&;yGro<+FDzov>g#(bfcryr{;;_LvM*>N90G;Rh($w2G1J6w$p; zl<>}z8pVd1j%8sJ_L6TujtP`b*0IF3RXS5ZH-xubJ2Q12JR`l?4;GfPngG(858`zN zd@%O)lfXN(GTqmzWTNNxK`$x?G$!E9nG|iuPo5sOkE?`)><54*q<{4vi^eiKe~& zjOC{-z==aYi)UdH6`^US1{np`>r|H)k)uK{OF^7L75Hl9xWn;49k#q>!JbOcN|BAb zA%BtyKC-=@14XLWxWXbY{$_l--+=sBwnG9qqgneyyif_GhSpi3!@#VNTvIFmHWMs( zQFj4aiunEd^=s2g|6(T-!!dEALxgs90`n_sR8Pv@NTlI=CNu$L7KjZzx!eUk%Ja9S zZ}$l85Psimo*OBMV}I;7qAB?%Z_h++u6!9%EJ}f$a8VCL>s6naZE`}LI0<0nI!Lj> z&k$*U#x8tlU*ykN8z4$htTMo{nOo};k95((&o+(=Vb-fpv+_H>UA%5OGRh+Q--fW6 zjYMno zIqjcK#YK-5_%-L2A{0Wcc0HlXUnQD z*@qU-N2nm+U;(1SDo8(vOyGf{tqGERZ&LUTcqCjFFy(_+%w8J?$!5GyxA?vC8;HB8@L5s~^lXzC4oktI+9p zp^*-GsilgHKRPRx#%3iDwJ7nQRXzACqlce!+8%8FBo_zsbPgJ~XII9>cIJyYS4RAF zt|LcgLBKYnPa0IOxW^ldfY-ICsXJ#(*g{}7S?2Zb6TOn5i|juEbYOS-zZErJzRZ|u z{)NwT!g76`G%PO~D@s)?KUwrR-DB!#k>Y|V z=&AUCt8QB@)>-;pIcn5pEpCN4$6#|_qKPo^Imnk_{^+rk^jQbbeUaM*7?xh`Cj2Cj z5RLAdfaqdoF2qa44KmHsg4so-E|Wwq43x^V*d|PAuciBY%y1ESu7UOy02PsW;i(7< z*?MYkTTYUCaP=AMP!*H53huNL7E=X`F3YtmgtDKq?{83WBlM!U0m4$#FjVu(R{^1g zr9tE>%f=Nj1&8g?R^b1YT+tSyz9VOEgAKYQ^Wo-KZBaxszvS)B8dg-qiKsE#a9wl! z%AP^+MPL1|gAAfPms0Bt&DgmZPlJ5k)<_akh+4iIT)O!ZcJQ{Bk_H6Z3n|173dp9# zETkE;U68LmN+PfuJ{+9-mJ#Yqc+s2a)8~qSO$?RcV`u$a9TF42#iNOzxt=QmJ(GI{ zSeZ9$YO{9lsuqYEN6c}a+@Ny}HtmU2F}$B8L+NqZQ4h2~+IoEy+*RYRD4~qTlayBJ ze~7919fPO~D0iiC@}Jmcja{Y>c9mhGm_#PHn0M#tf2C&eM7B&o{llF@zj#upD((SY zVCD@@<-D7@RyjcsI@+RxHs1b=PEi6dv$EQ&ZSOH$7HWpnl!ea_K^n^N`Hx6uQ@t#T z#$ROLLz7>_YYA5fjUf&owuVa5qFImlN~tW8YX8)EtJqShAaSIWi7nOO+7LdjV5Zn9 zF@PT?4sj}{_I#($3qn>kDwCulC{=b*nwqJ}ug2m;j!}r-jC$v~-AWd;1N*BdD)y7~cs{It@vUko)r88-YAPjO*ASA31?Q!a#`LM;UwA-?5q&@ z2DU5Tk_i1Eq<{jgQE*LZr%hu`SsPkw=q~G}E?zdy?tL#YD4hDvw?EN_IDRtzI8d(K zI*3|4>=kU&U7eN->QCto1~lETKYY){kpV5F8YdO6}4U-aGb2FNg2C*+|M;7zCO73!g@?-HI26#KkPN+WLP5m-9ca9@^@*9 zF*?E`?WIcmqj;G4d&vN=I6hlCzp)pay;t#1O4Uw^9_ZUj1t7cuP}7@uIdIGMHJR2w zg~{%1=ZbZo82P^);LlOh)YtT47h9kBE>8>8!*+QzQnG5Q@b-hbxg6JCbKfOfdJ5yj z8Gh05=)Up}mSyX-J|>|j&0h7~_FP}x9d^QZ~kOfIFF zW5zbbNk4~?qDMoQcR+geR-tC8Z;oau#!=qYa}`PH?}TqmNTn_5%il~Shbfw|K1Ww3 zq(RbsyU-gTK{mUyhH_cBJrIc(7v31v!E1#`wWs0ydVI|YQNpFK3e$^eA|isYO`%hB z%TdxU?AgN0;)E&N=-~oQGRD|MZOPsiRx~fWPe;+^rII6p7oKF>FQ>erBK&o_!NIk& zA-oZEw%9btbgESN!kUy&2|szI4Zf}W(Z#~y&3p81jFTGtZmkSAUg2I7(i|FnFEoY?8lu*f;#5Cz`NvJ^ z1x-t6xg2y^W?m`_clW)r3o=GHri<3T>cNy|V5BGS3uFL;A?@Q%-0XLq-6}y1bQKVO zPRtBGQ&k4syZZw8=LATxzU2yQl|6r`VfMg5z=VN35<95%y@)JH_T8bd&oBWDC%i@Y z9caLn8Xq@x#shm}$w-3-yhg)^LPK!kW zf9d}N{(uYPb|ys_`iN8&Wb1KYn~AitI|3f1AtcI|>;vZo<~)_61v~(gRK$2smPMpo zG5;|q_W0S#Oee-dM3S|Rn6z^@J|}ySVBnuM-d2uS7DC0&SdCiI$3bU3%fY(S?c+(% zb@?gs7f`;c0mlY`D)ucoiBN@o2yNgVKCQ`vX_YqyM2$qLNOaJg-Vtt16oM&2F(;z; z@=T}&H;zcCl4(e}L%+8)t)%HQtm0k@A8BL|w<3JGs-;d=W_Hwp(cPe5Xs9{hHjPtW z9ZE|H?>UQ7p&E;95ZN;4V2B>I3ODaDer(4P^_-fxHN1@O+L>90B_Fy9kr;b0-zpWS zS+hGaEQpkl{vD~+cp<<6+Qi+I`nMa$g;cZq?JOC_7v?=qLgw!Vb#P?a%os3fj-ind z-XKZBum4`%I$CkEBQ@{yzO4V@KL1nMm!~RoGuftCkJtZJo81IeW8DN7xw*edN($bJ z#~7*_d55Tg>;boT{A_E6+n9mDqe-XcYaVVkr%7yhXF2=3fXZ{Huia1JMM=-ul2AtFPhM;qgOX+lk6!b#MBU|*gZEd;NIc3wTdFc5k#FNwS8 zW+r|-psv(LG%rTvV#uT@K5c{}?E!g=z^S$IeNi3no_>g$&6q(quRfN*Zgo6h#zfKO z997u643Y*C#Y}#~yGm;<2<%W^-9C#~v*sSzA7mRueNYY42G-#~G>nSV_f)=11+gOv z$aw$h@~~56c|z?|z2!gEm|dQIcUx9}U=Z}4-VcgAQ`BcW*Yhlb8oomo;2mm-F(IhB zqN08|%C@m6X=0$Er+$0*&n7(>|6|B|=`)y&rGcj!Eg`~;;x*Sh|E_dpwtAzd)0iwQ za;H`!3bXM5FWrf7l2wXRV;-{ zlAx7abt+qYQJFk=M%CgF9`hwLMw6)QAjY{^;2aV%(CxoTGw{$H$HllG`*hH1b#%Q> zJ9-z?Gn8dE)t26lg%nxH!vN zZ(oNjUFs4L^{HP3y{=3YR(|xZX0UrLhf4ISco+Xf+eDn$?R&r1HG8Yddd_B~Q4%)y z*C!^A>@_cRrLC%pG8X(S8=6)LwcGet5u-_1n*|de(v_)JrafN1Pfb-> zkN-GKEz3KM#4a}yty|yo+NC-WW~&)jZIIltMG;9-y_@sK6X?*?;GnlwespqVxs_4dxH@ z;~hYPO5WDS%Z)7v9sD3K_TY|L9BCWew=H`u()^*hgX7Zv=O_NuObsUVk?FcEA#bCW zvI?BjbIqifWc3r-m-qO}zxSw4i13CG}@;X`H+ z!RgQG>55020d^>XqmNlQ7AWxU3f`&_^TS!qerm?l!%PAZY`EAAlttH_4@zW?&uHb@ zFXKWa2dAD8K_XcZ-rs6olm7Euah2>*?-rFR6#S3SUCHA_L2v_EV)c%qMk#LXEHaAg zt$QN6DWU!E@w<|NI$ej~3c9xcsp`VKS6f#XK&4J#Na@f2Y{4l%LmTYjbJw`zBp zcp4N=kUqovFVFtZeX4G+2aK+x*V*EmmcY|t_sxM6eiMrozFEq@sZDs8!uR0$zk|{> z9GlKp-t-Ht@&WF4W@$R*6huLGJN?2~B$&R`#_>{)Pq+S0*$?`W8$oJ9@xlK#aiG$w zo3UshEn#Dt*Ds)*Wkgr!-Z#8AY{HhmoD~x3k3kJ)Cw!P$2D3cR@Yzv9brkA=t9=B8 zn?2ul7%_x#Go7Y@G=hLF=PriC+*HRpmin5a0t6`^me*4t7A72lUGIr(Zzu~?@$uy_ zrM=E2P$QQcVAT!Vwq;@*BB{~+=+n0|VCu4vKxBFrqg!V*oj}Yb<9`rLlI~s~a%lZp zqe=br=4Rw*!|11WO&60&1jlc>>j9pTf^{D^6&+RTb1ihLXnaB)2+jD506!9nKut3b zinePoWJeW%T{J$-Oj@jP86op76wLWv^q`Zij@k8iRPTRU^0-|X<-RI=P@oHtDy_6S zI3D%|3GxD*s^H->eYite%RMzKCP!Q{9(o*7)F|$ez-2!7A0he7O<)|>B~574cw(gEoz@E0VG+GK^2bklYL^eY}8;2N0l}~+IIr7WRu>>C%_dL$~n|lhv zQvqM9Gu!0nO53X(x9Qa@s4VtP)4+qS?WtIIqTS<7PPcgX>*oemFO5dWAO3#4IQz+- zW!Ja1>BsEo_|viHO`MtbYn2STV@4Y#Uu(#}b&KfDIr$ZdVvVkTo8Q&eD=et3mJ&J^ z?EdzPWc2vy_){-6Ky5}gZ^mnR2q`CbZ?cxM&$1Y4p8L7gN{)wK+Jj#Fqk4-J3!vGm z0&j#ws&b?V@8oM zYl|F^xD{1ksk(~_q`$o=-tq)DF|~(eab=1EPnjGxB8o zz=T)@aD&{tB>FI7r}6UCn%^aEe?b;TX3wK&fzfKKR~XdNdA*=WN<_heM__f zIyH`ehr#6WSaFbbUInI#tsLGRyI)G5A-^%!3|t?~Kpyh*nqCq2yU2~=pJGNKfHojw z+qQ0_xusqy;1B7AV_JVP(DrSBU7*KrL1lLD@Cvzes*DpcqhbIwj(Tw2KZfj+v)=V6m2_;UNVBGzv#&2K< zO4Uk_zh^(lk9t$V4Eogmf5EXgxJc$qJnCe}hTETfZ_Yk9s0<7PhsLXv8wn$7kDyH3 zp#8wvl`}{`Z_|%}tNh|NV8BllGESWC3tJ0D&>}kNoh`o<=653~m6!x!F>UvAtA<7L zppL@-V0r{V+!bR1I#cRH8V2pW~ki>C)rqEa+&>ib=lZBBPmS7n)dDeWm0hZ^H|6>d*AGc%Ux?p3Af-QTNh)FY!hfAQufNaknS_vI)`#4!bzu|~tqgPr#pJV878AZar2Qws%R z&(xuuX+BIbD|5?6b*z=bsUfz}G9}~!TiCvBMpO|J&?agA)_))Qx&-NLFM}99gnoaL~WoHW>7MSUiIi^PJI?Qe$p)9y-( zr|FUE`I*q!%jLeN-d~A_TXvkUT;z+RV_d?PJDY?dgd6;v7igl&P&Y(lp3r_{?TC0* zDu&>@P1OK z58kj`s6&;?8w&~(5%F)unF#vU6z^{~#ZV4UY(j6(`-FYHXr&K=Bg+Yi!%Z68BcuDg zq(@Wf%pW*cAS}*Otv()X5Ld7GW7x^lQ0x-I4B|&}#A{n?d-37)bY6<~UKS?UtFbDr zm=*6V(P`~#k}LWu&KTXOK#pnhr^mAp+gNP`T4AYx8Ip0}-ZIqjqY(~LtQ5mI76aXB(OG0PuO+*YK9^p z_dE2rGVF^e20~^pZjQS(CyU|tfqP&ACc*eRfq6GZV22bt)WDM&Rw+u?FSr<)CXz!< z=*SBD(S}$3EtHS&*L#Il&u&`TGp~F~(3%!9VEfSjv(*g~mfM^_m$UyL3%AXP#G$OI|`b5YM=R4Y~UMzV_&nkw-(wv_fh4C3;U;Y2I0m}w$5v%j5I zv<|P?o|#eM=*B_sTDd!f>qu}kuaK{KFqBr>MUz`Oyo-*-9)>z&G5Ob zFx@rA9-66te zapf4c^o1uf_X!Mt52;nq){2kq5RO*u#Zaaz^CHIY+8@{(he3^+E|;-UM!ETp%k;S@ zsAOx^?Ya#s)RA~wa!aOIi)O@!x#Do43oAcJJX{-qy@Hr*<{4ZJ!C6rH8H1N(KNMP$i5`&zT!Nj|(w z%uSjC&qZsI^$Zo8XiDe^+Pk+Db4R;D8tP9Q1P!NEhrT=kE=g7Nh&643sVbaEjhTBW z7L7zW#!fc%jyAU6XvwbRb+u~3Dh3*fc{UA_U%JR-<{q++TM6;lxXn=lB1{mo()M7H z9tP``Q)I3N2J+=4DX9u4U{rNv z58z~!A<5rbb2{`@jM`19kpeENf&9H$Pky)}uD4U#F5jBAHnnfhZmDf)2{l1IE*6vn=C;pJP2QjEh?lAm&*_`3%7K-dn^9CdEkbThpFGYK7=g;9HHWdyh>dLL8^F=*+BHSl7{d+yYU)0a=B1~+A&2OnS za`q-D9A`TNCE@`<6_ru|rpjlf6elBu zqP95)=IPp3>2-y=utDL8@Pwv8lRD{wQ`O{0fzbO}wh!`r;qgKH7$R@QFoLi#=ELB* z|NMiW?@A0PMBVUTFMorte-WA07@xT`JCU6XNUa@Cup1zfRyJ*zTYjbYdJw{$hyU4Z zH8a3p7?8rL{e02U;up+LN|kQf$|K2fZwY8JfO3$0gwja1n{RJyz%5ordCWL2!QgBDcx4cH(5#LcPcsEdzIJK= zYHA1r=j#Y+d)~BZbCvoq^-)7yNDPeM5<+A#be?j9c26#F+!w8@9?rd`*PR3Uo{~%$ zzJu_z8<%Bg%o{KOdFgzO&9npPf?_xd_uBh>_xZayA~%>{VSYG=isT zASvO-tdy^VO{ZYpTRk>ENz~-aT}G-m$RygaHGnlL?>681-v|JTgjgdNMeP9q!PVj} z;S3cDhOfImndXJ-^uw8c0H!lD^dW87>l6T(vS;el9I{LC&jA>m6-Ssooa%zsUIa$Rgp3O)d z{&;*$Mt0Si(ihE(DL2#+z#YxS6cC4~*6MVCJ1?v9_QerPJPTe6vR3+F?U6|!eg;bi zqS!jfLR1IYg|-(Uk~O17{Up6+mPm67PthxrNQU;Zf$@Ku9N=}A0#xFPN>TX;GeV!K zjQ(0({$%Yl}(d`9a+&AS-VqA zhP5SeEa-7JduduFaZ(ABGL51%X)kOG^D4?-V$u3>__2;BY)%-HS!kO~L#o|AQI8*Q zO;*|A}r>xLDy4kE$m>WTd-K~`nCFt$y^t;wMzf; zyt?C&2Hp2c0V&f4N+PnN?o|%<AJ)?k+kdHPBf zXMopXL)`639#Taxb>PALzW-y>)id|k8)aH=`WeJBx%%fL~j6YqxeaLv;nQx+f_``6}IQ%s6At1-P7-xI%z( zTDEg1NT3@eA;vrYKce1(EvmQw-c~|}9zwc?6p@tfZUrnFNdW;-Kp46P7^J&P5K!rk zAw;C4yQD+9QTn;Y@BRBfFTmr#J$qlVK5Lx|I7Gc1rdBOL;!;b4r{1#PS-uF^f3XjV zsL|}mf3jgxxLq}-s`wtol_%g!9Afc;V7xxT(vKwx!~`78wmx18<9&6z>pdDM%r12T zA-dS_LWhhWk|;->{E(zWo3%(RagY4KVj|`MrWm$B8S1NTV1b}_%!3+y@Gn&9QG=wd#bx8L&E z@*7+h*U#^hIruKV-ffk>=4S&W#|yNVJ0EN$()jVsyj#QPZ_B=l!8Az%XP@%6Tsl#( z{fhfhBWrWucVJ6j^+J!Y6pK3KK+m&0P3xld$PCCw{TOCezJ2=c6j8*I_(kr_ZvXA% zYB&}?{h#DshN})VUn(_Rgldfx4skj(tZCYQZk8H3ZtB>xdc-sc>G|nt<37hPoe90<^yEG*>C?{D7pMunOEA0R>&5;!7o*zr)^9T;|1`qBS4W(4DBCM zVa#Zfy04V$5uMxC4t6QmluMRP>6mM@;R>I)9b4_qiIP4ak-Xf^^;P9?a2Lx!m*)Y^ z0lgDv`J0Wb^O$~mw^@EqoVz+*`_KE`V-#*=+NDB8blMMl$)QU$NK=lB5g;D0M;N0w#O+REas);6Imo@Sz>tBZ$-bs zQ*>Zr0xH)fS@HS3J3z=Hz4)=`UzB12^^9beCbZdLj{eoorSXVFrve zr#G*b7~~M}B@frpW-+TkFb(D95R?YH%Lvd*6Mw)gggE+1fXTul&BAW_oUcHUd#mq~ zWp-R-UvE(5^hKs>C72AZ@8K2s)*~^DF;R|?k#SG4OkfJXEczeo%7z<_y889!LTki* z;)YA=qLz2~=6WD}V?Sg4F`6H8k}4eg^G*Z9eo4rFV9@jAYx_rg=3sVNp3s`E z!!4k=a2KXlzrV~eC|NiRP`?TF)9(eSI`8LGz}RlVHFh1uhJv{y%N4TLz}I`3?*mx5 z{l2=*cmFgE;#%sqh=4Pw<_i*?B}`I$EXpf3MJU$?Rk=Kp&B3mjH>=2p?0U44vPi6s zuG|1U(_So0Z)Vf7Kp&PZNoqJ--5jk|jq=A6{21k;sbs2b9vu0Ohk>_Dy&w$=$UEOY zP)71YV@7v&n#zyf>eTL&YnMtx6~c3-6+V;Nf7z3inEY}1pk~s1%CnPhjP&WGa*Mm? z@7nT1mydcLWLkfRw5}HVm4;aD54wgD?Ys--?aeZ$M)gK*8H&YlU!-9UB$(UnY&F(X zd}z;YLv6goEx2u`McZ@HFA9z}R}X5ES*}>=Hj~cy+|GZnTfKp6{$;&aUMgTe@Uz`u zA?V5ZDxWWcLLR24&{0Ud-TsCRt8;oxm^i7Xr<>Hq7w$u%>MoY>J@ugX|9&iTFy4sy zH*wos-OH<;zq!v{Asbb73e>14-kz%tk)Dqqo+Zz(XUsc`KnsHbM5QHx{t0^(Hhb52 z*Yc8llps?IQC>7OAp6k%-W>HZp1I;d{AX;%BpbhImi~4O^E+*&jA-H*TyDQ?U(Ji@ zb-WitgkLm*6~CPCg|~nS1}4T%dh_czS$Uh=7EGcC9{c&zB}zf*EGOrozZ-*9AjDW! zUIp_frn4w3$lW$3xF2W;%8ozx#zEl82VB<(n$)norp7NNSxS~Bp?vMm;%|q<>G_Sr zOKrxjNcLV2XWKF|TrD}_fKh|8R=R7m7m9x7%*yq<=s6AZOTZ|B%Kt1U0{ z7mM{&@KxU>WuiMEAIfyUfA&0l!hrn^RGT%$3V)6R_2SES(felGShPo$kKt?w(=flg zS}@^T-fa10I@L+!o}Y79Y(Wa_-}b6``Pck+*T1PIN7jWT`qpCM#9M{Fp9nano*$;=kpu$B*sSe zfzu-rR)|#3J-du7QSEUx1ESpwTc>2d`v z)3)0MT;j6U${}H#$P7Ll#~ZfLB34IaiE~#KqGE1$g4x$+0spD&TEaTLj{Kuk1#TGj zW(Kcp`-uu|d#w7$XPolME^{ogF{Jm}trMV;r&y$y0M#zeD~kIl#@0OWl7?-x!wu_> znEc9UbnmES*Wx#Yw&d4S{x}4N8eL(tWEgak3Mq{$7|E;fE_Z%cjjSh-%!zJLS(AoxZNG>Y*e{Zi56`08j?uU_V^hnHU>CT^+ zZT_`hR%{W9@iKwo!HJ(@8o4>L#sJgNCTI>)FLxUAJd;ckBlBIbbY}_ahsa)H*t(?8iGV(8jZfuSG|QWxh629`#}~!d8ZL7gk)E|KSxl) zi4kq|pu@prCEQG6nLT()U!`%G8B{tTU)g_`2#mmw;i%it75d;7T&-X^qGH0?p^s}O zB9H9Fzul$hz7k)K*COzELe1nWue~|XNl5Xi13g}6`FID8RbOH{hom9W9xICU$@da@ zCj?))?Sbo%o3|@tGRu1sVtlv^No2U3xmk{QM_XgiU>8@xWHF8F%wp5Bv?ZR*)sp5<_XPL0e~m~R_QlkS?>;m}Y2srUgmqt> zY`GbY%v<=sW${{#aAlD_gxVvTr_{OXQB$KhAaweKR zRyU&o^YAXsqBey-thY-ez(p9xD#mpsHpI`B;`<@RCD*qtYu z&!X)D*D>D(LHzvA4R?u7sJ=Fkj4#<*NN#?{KIN1kCwT*KY1juL4u}m^Q-fB8z`wA? zd$Esinfh9$Lrl{l5;>u@;bJg?Wc-uzdiS-VRtZJ=4t4D^(E0dVrtvS4n6Aj7!|e9n zP9v7|+DJ=`8?JFgoaiuJxNdU9_3tFHyKM@J(Jo0M;n$Nf%J-lj_asgiaz19oemb1x z(_K?CH{JRWv3j3h%O0jnKujYnxPHDhl6>4)#Ci43#IU2EXj^e%5nBnmykqvpy#|^K zp_H_ZFRwAS>r1SU#|grTme$8P=Thu3&|#F*mN%Qwk8AUroLHP6Pc%+M(w)EZ)=&B| zM{c-8GE=CV)mQ4NtbgP<+b$%`l3E0=GVVmjoqv&!$L;l(R~dw**Q;h|$Q>z9$9%du zMyf+cTD)8dq~%%-h)=iaV0$MAdRQ{`?Qr_dLR*)`ak8Ka)fhVAOujh)+V zT-#txuU4~iy6I}~{^!5dq=N6Aq3uuQGKA^_EyAo>hUXzoPv*}&^6IVA#81*)KM0;# z7GE?`LR_pCj6}&J^@x48E+St3)!_!(gZbCzD|iR&XEd)!jP^3UEyYSb6o#aKJe zkjPAQ3lhIkN@K`Y;@{9D*6Bw#2$^E{f-i7^VEi4AB@F};o zR+Pc=x$NlMNW!Uh8X@-6;bz~;z?P|BRACEC>E%fR<5kXU@-N4%GsGMvKRJ#EODFJe zMF}a%Rx}@XPBSOoEgziKb8dDk{GK`}d?9N6U|KivQE!yfcnm)YXA$l_m|b)23t6e2 zat$PBUm#rR+3F(e=kh?fZYFJJ2o?o{N;At_(y}7AqdA(!QThL)78talmEwO^!A;)4 z5l=?%g!~O@_wz-sk$fx4jSMs-F_qc%H?C%Y4Hy5ar-f>#o4Ft=M@2q*L)l*zZumI< zp3HVAxoXNRIkJrLN|Fbx!0XttJjaoyQ-x*PvWoBKCE!*ho(6Glfs{CVG=R!tXY|c3 zBzyGtL(N8%yE;*}a>s)fBK{wki8i`el8wp-PnOCRHDPbvsVK|CqYpth4s)30GNxL= z>Ys95X|s}Ix%3gokI(+wK1+i5Z}7DOTj*luJRIR3*JH2^-cn+v)dTIq%y-|NCRGKn}oLN?ht_ ziE?8_WB&1;_vQ0xIMCW($z+HoG&N(DTQYG>YU|b+{XfAr`)Ii-s`)Wc>KBfOT1$aO zov$gA>^6SlrSlOp0E<;d_;>bJzu8C0E&y|Houw?C8>37O6%W1 z`XKz!l!uHN^saKuikiQpD`eLLFIkLXyOpGpUF;NE_5XBncI9xID~EIYedKYEOmKc@ zCVhNd-?e3oiS762)_5?s!B5{V8oBHP24UtOYR6U!6~!i=m=A9X^d&eD71!V4Z(az% zAI=G3n0Co`XBtFv`^3QvZv@@im0xL$Z$Dy?R>Og=)y_vBeWcD-;@qXhCE(8{7nNd% zLOE|9nO-hrF73FXcgXQP{@mjMj_+2J};{6nJgz%4V{90PBr}*28`r#+Q z?!_Lp6Nza|C;6jMzDfhY8eHo{H}c|~sI+gF1_B-g(?5|rLTJ3Jn-1M5U_=qhLnZA6 z7Y8)dO4`R_E7PFZgnk%3vYh`bEUyh0*#^}#8z5HO+oqxs-D!#TPjx@xz<#@dEC^OhIVHdi!RJ>d@WTj$Pi8!DsJ8;u-)Wj`3-(bRhKS$ z4kKlvJ8d}3FxKG0cOYK5wo;BB$ehaRId!v*0C;0+Ez}$M7@fuByMbvkt5zQ!y%-tr zy*@%GCqHczWJybb&vFC!fV%@UG@$ID_{0&6O*S2frdM9%$$TxYF&LQ&rDahL?{ZC~ ztK=S};mwxK{<;KOW;D>W1ayD=7Q=**^P~Pw`Lb|N=6~a)*1roQax90gosv)1(kwQs zW{=D2b}JUs!XKNW%L-Sf z{my%_x?S2zU zE@$)R_=yfMX^3+$`*n65L}}9HJyvslmx{~(G4;t-!Mk|=vpJz{+g-bFf7Y^(buV0P zol5K0fN0-;HL**o@gN5KlR#8Y3y^f&J2|}<8eTN(7Vtltb6gvkt*ksdkfOCq^EO^) z;A=TK538#z-wGefdF*Vm*59;9H&a$zAz3^5jZV+A_)*6f;}F;L$+>`9p zZ#wRFC_x?2$q2jo#2>|K4R+ifiE6Q{3@*QYSHG34>1X_7JKT&Cp2d$>k+;`jB8 zJBo5_CZX>84{`|v0dNe)eH+t#DfLgctAa_FC<(;Wqa*)U+txBaGgO8N6}uuteXK%Z zs(2Ok!0RZ|c!Y!T^9RE__PqU8rUz7vZLUBiwB)7CQBmb(76#KN%Yz^9(SFDhoNsKR zqA$Bzn(v48lJkGsRtz}q$@1SPvy4~Bd+on}@H;nZEwow!$7~hN)cL-%cxr{D4=1q!*iuWAgIc3!T?l3^yLU;j@wtty`+Z4}S2BJVsD-oEZFv0VXb-ui zL1ThBo=!+#(}uNgTj=||7T1XK-D9$ER$2jf>iW+B7!x+(z!3iOS4ZDmhaI>6%W<0% zN&Wfe7BqiZfmkYjC%XlahIWPyw4A);%rC2Nwwal=jeDE(rVSSJGZlpfIQaG{z^3}8 zz?5z39}Z-99&Nf`_w(+%ePLT$wEP-sS|sIcVI04OlpYWA?32nfnKRw~?YY%W!~@H( zA~^FZVrjgyQF)Mh(-WAXp?p|F@f4J9eW7FCkalemo&7#d&v@bgeu0VnziC$TTdM05 zswaPjCN@5|5cCK1Xi@BBj2nK|+Wd7S!z+a8A4=$OCP6Oqz4)ginl?Wh1BQ*w2NX}m zjXD(VV@%sEz`}PE>7Q;0XseZa=5}K_3L(PYN4_~Ms@$a*ibKLm+%b28r-6<6;l>HY zpNgM6Kijh)-$ju~1!LqnpkZ8Qa6hjOtAoEMnebzF%VQjs48 zn?vG7NH3W*l-F?(Bo7u{0E_w66P|T~Ql^PFEmxQ z#gfOt$B)Tq_cep>ilX$gczdB}hyv{l)lqC{x+-3Mw1g6wLWVd&*qAz4y0G{_R8UGhVqA04`m1!55 zZ5N))03kwN1N2U!L;Kq1sqieudW4SREtC7G5LBq+%1)!tR@ODt3u4zU=s0HgIr{u3 z5rXq{A}KaLISFE}26dJaP}5`*K6nLFt$W-uE4gW{GC|X_^}!mF^M$6raoj`jm4z6S40VEUU(=_HKVPu?l5d^Y82XEM%IYN4y)u z{NY(3vOO;JZzaf>SX~^Tn7V8Nf5~~TjhpRaM0~$$0acXi?-#F2vF$pg6pHLunr#S+ zj4?P$bDi|&&;N6wWZPK`QnEa`X_Qv2mArgsU{*e7`?K0w?co5_kO2py*gt6yts8R{ zS3Mc2T@C>>TPW_*tyn`uth#6vISYHw-6s)}%>Lk@u5!wQ&bK_2J4tLF_Ovqci-y8B z>-V63(cX$lNIA(NUJKX?IseBx4A{eFmUBpwO+=#2*&)m}WX!s~Hn(wd2@JpCH zf+9d&=s09@%@ZaqS#H$%J!m3kpW$dt`r%6iql560)ZM=_&^9Cr(ctm1#M6J0)4u%E z#mDM0X?O?8&z^4*UlZ&8OSom*Eo_nGg4znIRHb;wj?1Q=;gL^_{qrn+!`5HAqCgu1 zspxZHdB^FWr1-tx7(=zNBPyVlUFee*M$Y1a6uX@rje!w7%LXh9cGKXHTIq%q`2%2u zm8v!xvX-x7sIf>tbGP;Vl{Hp6=94y|J(<&+z%V!DY%c6<`FgSLctRucti(+)CP5qiA&*U!=@tpuosWN@r7P@xsBQq0q-wYAQX$RaM=8xx!D+>{p zkC@Iobf~4D$+kml6j@=+3GXn55K@ zHR#gA?QctWs&)ZUk8f-5HS`JM7}9ArKm5{H7f)|`m0tdMG3KMRU7^5eQA3M;zeY&y z2QU6UxhW@Zoi6Y1fnDB^^HncHva3+~@$~l^p!860H}G{CS6Z5uFPX0$Zufs{6h>e( zRf-Axz3TbV&zE^Ixlat1aHK{K!~Q(>&W~gK^jRC6)ycuq6r{(5YMXH}A%O_+-&%Bg zTo@Ql*sfrb&?8c$6fb)XM~Xry=2|BX2@3C2A0>CXd4DF+BF z6aHX)RDZT$^=(G>CY6kk zykD&T7A9XpHph8bM^$jHp4E37`-#4Z{P^8>0jlOa-r|T^s=$MI{vE)4(Rb0I9M(v` zf7Ho?z-M@Z(m$S|V*OB@U>NW_cc7!t=g8c1Zxc%Jk+eJvsW;xT&#;Q5yIxCSmFc~{ z*vp#Xx%vf6VHI_`E#t7pjoNxa-c2Sw&d#`w_iOVxFJal?5(wRDVUf`HmfmE15)vQ& zQv7!Zw%DIqAOSrgUMZRG@7~e~dp-N-1^#(is0+`LtZm;hhPj)n-dSU2`Rm`C8i1kCKFS96JmJgVz&4$ zb0ySNw5YcHE7@k^Wno@qv%3Jr$x#Cndv!-5_FDP&9E)Q2Wqd{|(&YSk#8RJ}CCiHq z7P)>=u5Wh1vSuc%E6)=tLxjVtw|$nxP52Z^El5doW$Zt_VPK2BF|g}l=|49@`66{U z$L9?`BE-WukXk!>%VT2tqfcF9NP=_UZ1owPM_##0@9UAI=J9T;c*T&{_I?&4d9p$` z{6-25sCI7xZA=p!OVlx?i6W1(-<6#JU#CI!bzhve*wN6`q7SP)=t%t zMH!z&z>93HY6ZirU&0wuebUaTQHW-0>r9jE-ai`e)B_xhO+vKeE3=!+@m8J|10?t; z!?G;FgtMkU;cc8Y0P&{ZZC=l4_54VYQjGQFixgH04nla9N=}p3|J>ah5(i_R#8$~- ztAbrWQ)p9@C{(5DVYyAh6KXI+15zlE3i}_fP#7~53U!jrbGPjh%bj<(KOpTQ}_~5rTqtjgMj@|9sY|~w<-yXXvOo2OErA_NA>8~)} zAU?VrSztMNdHNW(|16{)$^yYvBx_`$W;Bf7E8@?jiTyr3r8?7rSRwrlA!#R9Gso3N zX{58XO<{Mv5gA`t3}MXdG&6qgndT>eAa`XUN~JxsL&}ZunPkc%XmOETYDLvwxtCdA z>wA9kHjfr#8ilHDzg8q4e#yW+U40Rs5yeU({J4gT;i>;S9RKiSH{eIHx~OPsA5j#k z5lV6`yf2}3vNtcY{=59u{Va$79f^#?sm>fcw!k=H^5{B7`tmrf>dfHb`Y#XQPeX-Z z`u9if5z+|$mMDE*pL6u3uy<;Z6!lI?k!1AsUEFs;Xc8Tnk#?pEUfYLfo+CW0*as)< z47k|qB(J>hFBtn>vRun+BRQ)jsqg#K9X(sP+iDo78+@?ACBOM}sRM(71_gybVw&-* zQa3R`QD#qepENJCF?qGM{7kF`L!Lz49}O&2eU?Q~RR>DD)8nMuX0ZG99G4;{&Mica>@~-!`GZwHRO?CVhBp?`ZiQZj zt4U3>ye(v`=eb&Su-c&{PQkdUei0r4wKka~37-+Nw~FAjBMR>nU;JS{yRFLfkfXy? zbC+>~+OGbw{zTn)OJ8w0$rmqcf_~~+{u<>6Bf2&3s6-^HIvT%G6}jd3S@D1o;BK=G z`hxr?UZ{OHB0NPKFaka9t^V>YaVu*S6PReWrVXi994w-^ZHSMH41JB@xBFi#YND<6 z8_V$g^|h79Vl~V?DN~8!cMQ6rAr(Lw*WVFfVVo?k3ih*N%S$cj3=1!O5_RJSy;uQ) zzi%xD0KRMu@D$a4>6c|1JoqO7{t&_v!8u6aTXk1KBs2#9?OyH@MTRNf{g_6ugbIe! zMG(tt{u^s&Z!NuK^hq%BwzKhY>s?=o^X4tCe3B)&6%Mjk5Em@*rsO5U;@ZW2HK+S7 z3is3v9TcA7Vk%w3X-5NUzsqxNuGaj9z>fxgetJ^kXUU zKH6^k_Xk0r(vUrU?LRSr4xBQ8pbE;NcHP+X*T@cce!ROqC*$+~r0WiTG`u!Yt66OT zB`Au2|EPCPs<`Da{PPSsS#T~eFq8akqD*pH_98pzskleVZ z%}maY2c7CdAFMy1=oeFl&!Cx{%eyHURt3B>`n4R>GY@|peaK#t{?EzG=To+GpyB9~ z;&aosZhH{qkuA^je$ojm*Q=xlaeExc=k@8U5KU-9cJ53FlQh+p4Xo~l zZzOCQ&%+05>S_WL$mEmz5d;}{Soh8Tu-+HmOa4#x^v8`D%6;mwI0ieTx?Jr7(4}9M z$%j|e1s?`8Wlfo7fgUS=$9}^gg$xUq@{TzNfteEUhIz4{^}HbU7Spj0`I*o}S5pA; zw7SlczPXl}Y5m}Mkr+e-Q{$Es?FVP{M6};9|6$*Ey-a|ROm}(GoZJst!~vOH4+cug z>%`U<4xf`p1GIfy3ds96tHw-n zy=Xxv6a1MjV1u@<_=jQ!#^d`TlT~bR!>;vmG@}%(7Udh;2>)i6nzEp?wKU%1vNk+1 zUPbGJTc)|niq)aFJEo^31H>^WgWNvkaus9Or_Vl>xj7rCl-)jaMbnCuuF=I&xbFW= zW?cv`(O&z=PH8nX+DrVVkTFllM?fL9WS#ucJU9@A;_lR>X|bKo``$bVw+F9>E!y)K z&;?wAabzQC3Ga-iF}Um7H$$a4k{f9tdsKu#N-0uYfK|TdGXGf@kz*(*_L8`9z@G!b zdBN&aW7N&{MSYP61wfm6LEk05^f?m*YP!{7K>Fq%bn5n1s%`$PmT#kLmiKA*$^M-M zp(At=)~`S#i-It8J>5$d#!z~>@QF99ZE^o{{xwy=NWLn(qut_%<%rU zpFbt4Yw$L?oEDj3=BRfR8DG5wEq%@zJ*3$y4vWRhJE(UhAjIz;-UIz24E%H`p>i!; zb33^!`4af2-%%@dbAMU90K@Xt>G@k9bf&+N6+LmWsMWUOT^43U+`Bq%Iy9<=Qy%)o>EX~H;u+jDxnURK{u&KHatc8<|0lIVK~lfuyJLY0|q(^~ejjvzJ8 z()kkIU}M(R;yaDZqq{iXPix<+6tjt|qqe0JEK}T)P8KphV{c8IFJxF5Q&FZFHiEf` z$EhM8@ur)WYxOU$BJ3R7OfK}{rP)Uwzyb`)QlP4KLmqES&;NvSWG3%<&fQ0+C!TKH zD0uFz{a2Zm%^!aD(w*k|r0`#I0FAJJH2>9bQ({l>^Bx!kcXNc5Wy)q(=8WvEJtcf(`Fz36ee9>>W`(j|Z?UMD`0X?si; zYg6rqT$=Clb-#$%e#YVaywnQ^L2jY6n_)-PRgjL0CMERS2G}Gui}DiO>Q|Q@JXLmpZE9@&eqi23Fu+ZL-HXhqoMFuxGQOX2CXBFJ+nKfW)qyb<(KeHn*Fb z(#`VL^@CK9mH()N`mhe^@X~#KunpvIp@EqCFT2)a1_AYP1p$64b*36uyvu`*Vh_R< zB%0lzZ0TIW`;Gw_<>XQKm)Yo2xh6zQ>1$X}dNR{x!JF>7B&|jYw_rZ^UXDvwz3S~a z1eb$XT6{;c@Uq9pQQB(S!@Q?EANXA55xHU#Rd?0fY@O%2a*Ebdg-me0PY9}%XEiYI z5On<^;#dFuWSii>!QJ|gG7trtpQlgUz4FDZ6zL&o%2y5J9c4lL7(qVCKa}qOO_ngu zPG8i{&0HGD-g9S#|BSfx45M3l5XlM_Q4ONL#rm>Yr=Q-P7p>KEq%1vX^2LjQXh*C} zX2c~7bhWidt$zbUlOg*68k5_StPpmT0ANqlZa->`yB*4Ay3ag`_JO;hXhu~~vWc~T zWUh%A0MnUt)ug0uw4ZkznA^9h7y2a3!?#I^kn%_h<~|F*3u)eHc|SXUZ@2{X$?<#8 zWjEli2IpehLC`tS1Cx5aF{>f1w0j}c{x~q?b}1PH-t>fT&DwKw0+HFb3N^VRrw}9V z-vteD?)?|0U(wEI{Yxjp+lW?$zXDnRs=!!1j(^8EFW6*-;K{Wcn9G2>n>m4EJlnIfbmYj7?tPx z>;1%bMyrXv>6N}`N9WOZgZm#Lx4R?{%*`+rsSePYoyyKzPDLgTdIjTKXqU253c5sd zeLsdV&@F0fvXo{mYX6(Ep?$d$u&rlQ?3|zOr2U9OcP9Lin@oG(S((FdJVR4GH#L?1 z+gg7HrHxi@=;mHYQGY!*;L;@j7OHBwGe)B;1*IvHu&~`3pXy2D-I{pV-a_jgY&((a z93`|Ffu{aglf*pg^VYx_c(|1Hex>U~bwJ z$fv)HIgsi!N}5@uHGlR1!`yk5rkJ;MD&{fGTkR;xYn64u&dB)=zupshmvqGZwSjJ^iALwm<4v zg1!>BgaI#m=EIs>UrwlXbNDNsigUg`YJgjmPG_3*$ zP4~n!c9-bZ58dbA>sH^u+L-z!cIzyz&H78u?NKN=-q8EGDEoC(xANvadz9_vZ~1!~ zkBR08P!@lrW@phwDTWGcRiYo$hPvoKdc4FzVwM*+%{z5L0%42)Q$ z^^CGD@Q-Dm%kByTih{+FLi)b8{g8?*Su# z{%;#xA4FMhb+BYbZgt*c3)twsI!PM~N`rwq^M&FA?{S8*guxPZT43bng+86^nk0Gq zkql!NGO51H#GK&HWkH(R&J`q*aD??aaUqBGrU%es(t}`jA$>ss4qzU(0Zu%LKLrz$;hc{mWz*mnh z2|zmS81ABFbD25%%s1}8=WV}ma%gE>mARpI7<^Yfd-2vfJxI#R2g4mmH7-XuQ`t$+guI$8?(|7*PyiG2 zfFdEzA=gT0n!N+AnfxhdpDB7~ znMO0+hz1nwN*H?6LL^E{*CI(juKRqId_ARhv3hanrm@;XvP#2i-4tn8ziEB@{}pK1 zwK(nhUcPVm)9t^J10+X^^a3}7D~^Ys*n9^iz&a~vA*wM!t-^-p?T3C!ryQ*I!PjLx z88)t>nBS3;2!x@o?l}G-c>$wv()tNN!z0^j24wRLh-4~vo?-#<6d4l_J z`ZIfFwNL8{jBg~u3JZ(o`lN#%7bbIa0l2F@yuKl2lnm0S=ctnxH9F5uarjwjV1HGc zv^fxrq03_|ih=Y{ua9`OY+~vN8Il*1rED{!fp$|h#kHAtYKCQ2CJLgNyoH4s6vvTi zau@9a7__%bNUPTfV{9K~O@-qS%LPffheOrs)>z8NlhPt~f+qLta^Qz1gDuKtge1V3 z*b%_GRdA|-Vc>f-2b&iBSZFX%qGP=v6F^qVY-eXQ;bpflx6EltBuRO1Leh7|GgdaS zAbD0=GG1~S;oI%@G($o8Wf0Wk+C34JL5VvG`d(!HuMi411cb0OeSOZtj#rMd3W#N{ z#7|O63=M3%H-=+ney7}k9_~1Hc93v=794^*KyElis$F-ApA~H%C)#=x0M~&$jP*C_ z%3!Ac$`^#r-p0Lk^dR}X=GWWf?Vn60RyWHs1aZ)i?T1L57cr{F`gCpN@FL%_9f#^- zJH~=rrmH>kr1JC^>^9QUJBlWr(__-Nv2`qR56AUypbru0P0*8fLA4tlk0rH}JZ9AO zIE54bV40Cmv)O-z*iS3)glfwh7ZEbQ&|vB>s}!TiWI+^)X+dG!(-qf~@xSU4^q(3v z6zO`i#dbS8feLMFScKjmt?Vb;Bo1km-mA3 zx5E}K$uP$4KPCTj<+bJo>j1b;7HF_Tw|gGdbULCQ3ZhGYreA0157Sj@3a#BF^tD6- z*=G3;5w`K7n@vb4C&X6_rIVx*MCn(1d>E)&=z-3wiCmL*!UGM@lqoh=UT7i9F}ta) z(_>m>&}M=I?vEN$HgOYy^lw)zhVlog6q`v3Us55{@vs=@$j%>x++j8(4EPXzw_d~t z82`s+Nvn0b@IQjf`r$+5UaZ1xog?LR`fbI)qV6p;+9Cg6e~jViG3Egy^lnFUlirXMmA5Pvm%!}T zZ?47-^(o?F4yR9q+vvB9Gw4iR@xx?$*M$C!hFbGJz+{!`?xzR z_S6IIqzWgz-yEe8i2%v^Bh5FHQWK?ck5zhfbVv{`ne4)!OineXnedswXB)ydxL|N1k{?P`BqPYk~=hx=-b*Wqtw z*T);x80iM0Gp>oMyi@n@jzvVLgPHHjvV52f6z?kzUM5}NGUUqT4T}D(rSDx-_1S4! z+i_Lg6w~6~vhaLIPPo|9+VX^IjPcmRw$fH3J*_t1*K%1s=@i5iuKYv}36gxt6}FkNWCvyUIW)vRV})a41jkei|kapI6jwesapR18>?!%=5etaM*6_1rYt^! zZ|*%p*87#O^P-0^-#ivW=JT~HV3cueIK0W8ACG!()BID)l&9z6mlwY9a;O+?A6CPE z(w{@%KUekTl-!1vFKxO{gICt5TeEE?hx&kRfofb(Bq_wj{q3`81`98;!5W}%Gl_=e zsl|VgJW?ik4diGxy`NZ8a{}_hMHVJ(CyHSuMD^wkACo_3eJX7yXIAtK<8-y9;WL$; z%jv8vPLx&Ce)?FHMdwp7^ndtV2OOAGU~ssm*3IhC@i&fn%e}b00a2^-Aq=VEA`9t) z)QazwEWoVkDi2D>pb#;smA}z(ZBafjddOo#4EH1930bZt-TOH*lIAoArnbCHZZ-X@ z?%ITogF!2kJGq%SN`?vypM8t-8(Ci-lW4khAf+ zjGaWk+kx#t2}3~{y%lR>G0wckot_u+Q7e6m{@QK6;`l}HmL}1>N~PY-a=g7mCZ^bG zEDTxPuLAw!c+tCRA!T>ll0CjyUaM+hAq5J>-yik&;Yg_Gxjc-xI z=)(2!t=`yiqh_s5VWsu!VoHc6-u_H_Z4+hDj(-j4Z`TzeMC8%!MD*0Wrq8%teg53t zMey}W4jmcU>xj}r8?0hZ37C#p$)<%l4osymDlm4IglP^M{tsI&ksRn2{g$E8bSh=z z@@QayczgVV!hci8X@)Fs{{MZ(bp#7eE6*f$w0TefzZ{*1V2(V& zf0}LHKb94`&+v`!O5Aa6i*HJzUY!d1w;L7+J61pH8zeH%7H3?q*4`}^_Dnb7?U8UDautKm#8l7Rp5$a;oijdCi!0Kl3uap`eo{GYyW%T zj4UeNY0|Wk%u*MJlt5d*l59HYFFOXgA;9u(D5y@%f^j#3wuvKxr@=^or0&3_XU+%n zWsd_uJz4W*DRzx3AA6uhlu0-jezC&fh_BPGFV-IT*4%RyjKD?Ew|RYSo$LIxH$5gy z31WDg{*!1oRK5zMchy>?cmfkCe8xU03CJ|r8vp}#AV-i*{{cM*;K{J3TH#oP$+y}l zn$o}g7t;I9oukA}kMd&`NTjRf^1Juk?(6!$C0$%X84zp;83Y8HuJ#r;&U8caLeR*u znfZ|Xlnc!iVZHbH{GH*p9UBGVXuUM9ZSSlEwBLNc>W`r_VMe#;QYcUW6vQ^QX=j+v z)%oh%l*$2Vi7W!d;i5n=@#>2pE&xX(z#e;0sJEZro4zgAt_Wz6ltgr1syz zAY+7UK@`e!Np6>OeXslkp#-NqIK@HTa_D%MnddRM6SHx=-@z*rW`%*{uRpN2%gIl1 zWYWg>H(fW4-joo7UY=9c#y0|n{ZRs)59lkM0R)=LZ4&xX%Jr+gUDehbY3%Q=~PsqF+XMw(V!da;ikhLt|JQNY`S+!`7b4G1#7W4 zf!vy)M48E3BQ!iGkIx-H-$9#;x`#5f#7BqShtr+=Qve+zYn6|ABJ*7bbv*+s#JvFw zFCPN6=XhsE#G#^_T@3frN?fyuNn^}@Gg|qoNa_QMWfBDt`Wp;4zx+(wLVJPZ1V54r zMMi96wK2>gW~N;Mn4^0}3sbK9FAx~NZ>#0fU2KMk={(*IMuUAFHw+_|&RBHvy~yNA zd*{&=^nmSDZtn|YT2pL6APPr_*m|gFOJRy$fT{7b{wbV%>aG=fKH$!ZSHuOAldp&4 zZ4A6HbVx|lf0d#++v}g9#=0B-vwa-Z!P{%SQ$5kICTUl!R#R~beQq(>+%ToK`(f#w znH`tB5y|Fp--}V}jQ1~Ul1_Vb4i3%l8@{WLtc`EZ0uT)MzKuBN?VM}$7^K!ZGRA#t zB$c~eKVxmO!8|QC#XvvDj0nc`J%o6`5Q(mSo9gH=FFx3=P>Ap~bVf@dCip1+)Ii}N z(-aH4A9a0MK4pYyhPrKqMBw-<`N~f9?+e|Tz5-HtNJOQS+Y$Je?3)e=F9`qSzSj~x zy`+9w_2-TBzwgzB4Ncym5wx@f<;UkB6?WXz@aYHTZVW}LXR6@$!^~Y~sM|~5|e)?kF#xnAqw5lF^@v{wA?i(F! z{5*89lC$j#y*HY>S5fzo=!}D>ekFFc6b(`Nle==nSL0#oIAJJ(;1*E<_I76;hMI-? z_L44+ivuTS_GA%ed4J!^1N6iz2!D%U4sewv83JO23b_N~-h=KaP6QrC7;F9b2W^4n zir`{rbBcE#v={uC^UC~N`Vz$As>nea*1^sFwf-_`8fijN3!tx+=16h?%FZg113kW} zA^>V>$c8(Jmu@76$UN4a zz4oCIaCv6%2AEt=vck`P&DZLtx}ENRb{pUXxL|Yy3~g|=TOp58zW)XL4r@YdfFw)4 zlBQfRy6|v&DBvwiHj=6BQMfG;f+XNhfI3vxepQ~tT+vdNIpIJ!-EYysadqaErEw-E z1EF*%E?U}~26LK+w|N*CRRx*VRpnxFanRf)o`KwaG5#O#kxk7|?EjCbvkZ&si?^_Z zFh~s{(lH<*(n{xmfV83_-GWjI0z(T7FqDLJmw-XHl!Snkl(Zn--ALSh_}}N=?*lxC zbIzW<*Ke(N!R`ZWygYl~X%_MM(?zhb{9M40N?LjH>7WnEY>loL%I}j&Gm^9!5j(@V zVI)pH_jM`>`KW~xz^JXv&`lN2g5f|%r@D-D*@4&9d_%*a&vlkMs`=owC%Z|Kb#;8^ z{O@$zjQauH6GJTdE(YT6lomgD+vn;>xD(2p@!q|UY64DBZfC#01t!J4=OR`Ltb529 zM0I{ThvrB4qQl(br^aEOonq#Yl22=66YhfVq0zvIr4+Zh^bLcqE;L3C?U*3ZoVp{5 z>V#)@lTGMquXk&ls^?~Z*fS6L;TN?3apAmG0^hB_H4d`Q$urO$OwTSEN@gFplDpS+~I z9$8;^KF|zA_>6M*-1Dl+9RM$J-y!55pE){A$ISGg?x!3rGCb5FVY!}0s$=ZsO!Av- z(;wwDcZ;__+Db*0+3|JlQa$!>-iubsob(L&^1o5rluo{miV}B4Eb7#umjdE8CCvD-dD!QgfMLMwuzboWmRuy(}cB=$3_pr8G_Od{GAz z@MimhUy+5d?Tay*$EQpV=mQ%Vic_1rvN5c@C9wzcDcb2`WiF^NxZxeSdmt<-YL4$0 zC?4`RlZVA}{TZ6mRI%-8>sM^y*_%01mE~=opFe1s7rK$hrrcJbpDtsfD`ViJS?f9@ z4+@i`an{ElwNwr`f83WKDkZQNqAc!bcDR5pdi!G zrmxm_?f(C$`5qlS-%lePP7&96bJ%dNrv6@caj;ludDKkmIy z!J&#&E{%*m*aoxT-ELnr%B{jfu-)Z(_exgJTBPDZ_MR~6Som(s{FAm>dcp(PBPk3vL z>I`Lo>$Xe;PoT-v0N2;u5A=(~HWHYvE5Vqx=zY$1YQi01Oh`!rip8jRS<)sFcF)qj zT=#mbO%Ey_#NuH^taIM$CGBnQZIpgpik9@aA*%)wKX5R|bL>L#NSAKa608zDxyA7B zbc!Cko7i-Jt3+*tF2!(01*e0yzW=D)^1kO?{0Q!&z2oLn zPP6|^E2-D{&didueuJ+ zLZE(zNbV9IsIQO(NgWEOc6dV;p+YIpJb`MB!ta^fb@kIqDMNSvNvWcaGQHj+pwQecXb@6K+}T6M8l&52QSu~WqBUwC+Pvk zEbWyze8NISxK$uJ$N~KIauSlp^J~o4#vU7JAZ&>GNy~}93fOd|=*r`YA~Pe?p~!&D z9*U;o{$%4YD`}qNak{*vM)uX_`I|T@Tk<%_ccr-O0%~jjUcR1HKX_f~oEea_y4^zO z+Kdc=Ddi!Vs2hZ<*WVbOm@x~{BAsWL`D^NnA*ZhkSSsxOr;tW?B7q^qcw&*_(bLkf#(RX+FTg_H2}A4n^G8FStc2VOHxW2RH~R3J?LFCHa+TN1y({PC zGI(dClxYxbB|MJ3+44TARzfEVVdFzb+?zRZe89n!Z~XxpVWeF5#b@2J z8_k``6>C@W;Q&FyPfF%8LyVaJI2w+U&FPy)c<$UGqiy*Tj51{?@$Ji1q12?FC3xJK z{k@L-Intd_a|ktwJr#pY@8+MFsm{OV!TKf_o+wKcfaUXoiNmv$8wQU&Y=4tzDAUOaOd>f{jTg}zdB zW4|CDYsef2V?)r)cw=w3-utr~Jf)ljcd-3Bu>HX3VRv}@1>;XD6>XkxL)d1lE9}_4 zPQIAzf;a^d+2_=C^Xzi-2VZNxqrjR_9)RWTTukz8OI+EvY7T8dv4N-&78_ z%ojJBg#3>1BVb;06$m1{M;tH8aSwi~BO}d%24w7BC5uGY471Cjt)fp#HtrVD+GKP) ztO)TDdLgK{ds$xPCm+v@ znU!{S_2EqnvDT1-HO9&O(IanY8))l1&0?ulU#HrBM9VAxYlJN%o5}jbRnc zj-JS|yCvr{1&_SIiq=zzj{b+n#~#QbnYg%t(=RhZezz`a(JPbDFX&r%vItu60p+Lb z8)J5gx~;l&lDzZR;f78ct^A4z zN(n@Rt;PG8`|ZQrnyfZe?=sr#*G(A`NzDfXOI}r>yhW8d?i70$NO*}DP2+(5BaxiC zPj|sqn5q{!?ON4Vf$Cb+yPQAnHaB2K$k@@g$(KRI3-kSW(M6Y?WRa7}r@&-(>PmKx z?mAh!T=js=-Uuh^c>9c{?!HK2-1mvkUqcl$3{PH;rY!f53;25^Tzi!!d24;DRlZx# z)O9XuI=>*JvGu-K#JD`Q5aUsl^OZs->tWv7;V^j1_`S-O*S_=V8t4_e)lP3rM3*R~ zC9G?nyYGLJt3Ie9bs~B$BMuRK|01+d_WJ%G@E9>1BmUD(D1u()xqN^CWnq|p!y^le z1Y6BV)cmD^)z2=A<0UD$KA8JeDa!4<%HOx&e)rW|nac55xSl1Lqk1fycKYaK4WH;a z$NX|%VCa3CRuu5KlKl4wOMRUi%60p26v!>f4JV{}pR;#sJDq+naZjKZJ7e}@N1nv< zN4g_mg)&DVw*2LQs`ijg+u4g&)D0=TKK}>+gy3q02s7fKY`S2 z#;%Cz6o&VpePU6CnU+MMlDAO8K3Yy%TssVt)G9DZCSE|m(we;72k38|#=`*15(J|KU{Vi^6sA-wFyVbe%szPVW zV8IyxBMKZZ3IjSFe{+t+ira<9Z-pDf}La#rM9L1EnBJRutRsIM z6-mf)?O>{n@Fu6&)9NE&Fgz4H%aNM=hhvEEm{Dy^5dT|tHo&!pBf#MPjWyNd$Ee(L zMr1B}UsN(4En4Ec&0=a{7rgzS5nrcG37lPg-0YN3M}myQPrQIKW%bSeWub1K286^u z*ktLh{$v7{xpD#VdaE07-uds4J#7&19!3fYsG~%13Z0Mbk^VXloxJX{+&*}h<0lDM zxb^Pc5zwSNO_X zDPg#rO}PI;#%l(UN>H~-3MzPAv&RH_Pux^zA7UZZA`1Y#LekKET!pwy?Xkd2Y#txBOXpY+rjt!QE9;#@o)BLmqg16VP*PpR|KuZy+gn+c}Ks-z8&AI1! zyuF^LQ7j5^J)un9A6wfKZZ~t^`HHD!sB+mn0*6$RA98(*$@sd{3Y1$!PQd}0bk1#U zAdVlHc=I4PGJO_vcd+|2a!rjJCa!yXz^qxRFAX!rLkdfStouG7EZk2`MK!g^RR?R) zO%WmG**M;7h4vC>1*03Av%ii+=cO=2(GZ? z#=^N&OwkK?7HQLGh@q*0%Yz~xb)bPdxPwNlvdDgN0}g?CFmo8n8kJ)!{znjh4l1|u zfPUR~Q9QM9xAfwfvDZO4*oQ88QdhXlt=xFEk%K+^rL|8%rbZjn4tndLBCJNKvS&ta z3sU=Dih0e0}7VUhhxyUc2=ynBPpTntE`WM+YfJ{af!ji)S; zXC?P*e{3`VP5ry^)gm;u8u+}09xB`b1NTjXO9!8S6K8n0nnr;oVwVmz5wvUM2Gn;! zu}4#M#ty5&EZ}4Iz))J?7_EE>>A#MK5ZHNjs@_A}W;&p>m1c%K`qg+yb)DEV8NO@C z@C{4gNk3nI&o@R~`bsIQ^y4RikZC~;d`-&cFhSf@VEtzuv0OqFp4YuVH^D=Pmiml% ztW_D>vh7E_c7JlzXx5RVYpoqxF=UC)<9X6j`DXZ5MV>jM_OOcH)wHUM2XKiA8+HEVePOmnqpXs;h zk6Brc$;&X*y^e7z5J+IXEKD)pc%^D=P$W~AIXd`gv5wdT{=0aSKH_mNG>%ZYk z7vQ}T^iOHJ?dH10S-5mddDmf@T!H#G!o?xlg~Y@CLCqyA>Y3rZ2IYKi+b{PktqD%K z&o-81F5PO`&JQO!*REn7zH!V=>m2@U3Fm_6GeyQZN7AQv3aWO)UIqa6zwRkI$PP@$ z=zr*D>FHQ=8vyhB%gV7AUEh#W#|&Zde?#uQ*ISPKES{!(pY(i zLqe^Z1m|}?z5qN5HGryc?Y;jR+%GHAI4BJf$^uJckUp)0LtipRypDPW_nem?GkQRTM3CvS=s;xn)jzea(mvpa z7Q9*JSBHjo+L_WH;B4TO$WN@7_AAmYcrro!fC~~7>mSryxUK;!(ef`o@14+fUl!HU z`>p;f0QlWIrL6E3pp1AX+#zU&Zaf$y__cvGImP>^c6uT52BC2cz{aqLI-II9YaIdL zQ5r$fN#!8X1bnZXbk;%r*`Y4>BeMX*=W)-?f+tCx^}lRV974#DL8#hqsqIvd#JmpB zB6i)M1*$I$vM>(oe?cq!R1H?bB@^M@;&gfgA|Q)Sr^sTnM&rxVkrVGSyh*y&2eVNE z&sibKws6D~PF~=XX0UEd5}k@Pq3-caOx6)?+KS_XsH z^rgvhYt{doEtKN{AJJVypJ}C)^N2?OPxoyDlNa<}UdducURt-vIa zJZdH&oWo?p?a&j9r$D~Fn10P4MjjA}QiyTIM--8G0i*_xpxoEMs-2>S(^phRpxv;H z9`AuDa(Q7*wwvs2CqsY8vc;N?8NTUP6c6)>0+ktV2^v4jrwj}ElBEGyQ)@IkDJsk5 z6PU$ChfMG8j#Gaz5YJ0>(PJM1Wx&Ryb=Y@z{Yk_*tG4WNX7pIR9Ay}OZ0?L5^0|W-no|;7DS4>@#SmNQG^~JFIzsq+oYusx1_rigy zm9$AADVcBwYx)<69-Z(=%qr_5-$wZ;(9^I#*`|GN5%oZDrQj{s9WQTymJzJE6+Pc0 z=0MpT^3C@z@-A{Hm=Pni753wnv80F6lZXoPkHkpW1Y9WJQj!8?%{(Oe0z-=whuu+@ z%4|Z_or_RS3Bl@1-1H056|(fqLWF1yv*dEbR`@3r zPkzujD(X1RBvYo95&L>F^WM7rzNyuMFqkb)dJ{yL8SfR6N^-z(r|N9-#9*oX4xMy- z5wz*JafsK&-2Fcd_Q+WR6J*xjaayP~ur6<#^^;BsjI%fI^l>pCQsckzV>nB84RhnN`EmmtbX+p#JsaVqG0}1*nY6LpkW$tlN4)odRQfK_d}X$g6dof-ulWO8opF zoNw>|K;rO784^!Hwi3!ae!RYv#I8OvNLZEY2W~5WR94H6m^Tl|?$CEgl;993z}k<( z`2<5uSPLuOS+I60i$!7iF80WF%XzA5V4WjB2Xo=x$VqF*!O9h5xjqzxV(G2pLisZ{ zNxltBq(-i9Kb&Mvf?58pZ~5RWwQmlhW?i$PsqewaKwvcg8OB#Q%6pEbds}UWnAI~t zJ-l5MgTN)XG|c9)JEj{daA>{06hbX~jk6gI{GCZq=+8b zJgI&4rj*}WAKJ@{$IDwXx-jc@2=8A}+B;HKJ={oqk?i(apwR>Q0O)P0_}okEzq zf({dzV@|?5ZLmsY($6%F!mwbHESc_M6&XeZcY^ViOJCn)VUzB%D5KNFXQYtigmJZE zG2);8GQy$-Twjl`ka(0KjG@fI}@~p41I3r@D2PsWRTu|ef4e{k8LN8-yaky!9OnHg_$|Y zCe?J*Wr8N+!&dD55nKH_ts$jq)^ci}3}+J=BygH~GSAIUT!|L`%zvYbF zDBwq|{ByFM7oMg(wU<}M8qN-VMxRq>_sv+Al_NgSv<4b6al4wsyI@P>u>|mlV8_n$ zSA4*9L2Qm@(%)E}Z?1hAx3<58xS zVJgS_y!^s@Tx_b+vZIAu-_}UKjObZZ7CI`aHMx2pta1Jhhd8`!@L-3}Ro=gn&9_}1+ zKH7FbUT{Yhw}gHF0W3`H*|W>Y&gic?9ieo2-Sy7e%|&51Rq`WF?itN!UKrNk>0|e+ zr``H#-;?)kzdg^pD)xJpW}E7|z_VH95;9F5rytqDC@z^BQD~8n9eqOSKUSTTzZm`K zir8yUaP{zoZ*QxdttBq%vhS-P^{|=#?db{dExcx`xL$6UMzLVslVnE{K6!;FOgNTP zs96iv9QYaEkP6j7t%vVsU(aROyG+i7ZdzZP^_S_)jT3#hU7$NKjO-shXI{bNicE)N zXFhO``nf7n+^hz7OT)npM(#$*ph;F@lyI;fY51w>uYFdnhY^$p9she07nya}0lzbP zJ7_U1i*cSFtEvnyE4xmlmRz2k2;D`=ywo8|ierDO{Hat@8^tpkH{{$(*qTE9*I}NL z<-yk&rKGSZ9){azA8BoUF*HmAs@BNw=o#iEOoI&%-fS2@qlMn=BQXhCE@0^N*)}4&|)x)a5fQPZ;t*p*6ZAsB|RHi!wmoV zrbd3@@Nqkc3CQr^Lh~0gYUovx=Q4I zMnm4U7Pj6$yqhUr@%?b|Jx_OXjr03I1#)w@*L7=+B4o;#;k$9a9K8E3^i*>|v+ z`c~1qubO^v6RILw-^t;%o1hvy9?hvBr6ZMATJaaNp|lLAuG$Ib?iL{{g7naW`$u%i zl`h@GP@l`5)6a1V_otE_k|UCIe}opsX8Hmv?iKbK@4c{bF|x5EJ}SDuH3h*IzUPFF zT!0+^d3@7K_OFJAs=SjzpD@; z-L9r%G$aHDz3nX7Lb#bl0IfnDvuw47G;!+hG{fiX^#01^BnC?!vg>CP2jgVT2-3ht zkn&x0`~fUMu~9FNX6GT5W!lOs&VEDSToS{vy!Cp*h6uNLVL{CX^n7%o0PDam}< zh8V%2i@&Za%a1?K@%C83)=h|0(|~0YE;95}!*N{nMvNuJp7kV{h!lF#uF}o>!$~Ku6ftWib!l^eZKO{QYKR+Cz86Ums_0;2OQ-19ArpWYB!3R2`%l1@|0(8 zVgm-nXecU^$L7bu;?zNBaq`wzeW&H=Rh{(4@G*mGj^Dr7S#s}@%vHPyi)RSem9n)~ zPav(lf3(0agWL4x!GFwdYt7Mur5_@JIZ(qNF{qd3;UBs8vM0Se(seaavQi2NgB!5M z9zqd2((>4Z-FktXIf)CQsd849f|JY$QFols<9Mb+@$YbtjS3xMG}Aef1AC6-FeWDM zmfz2K^V@yGvKY6>j+*AOzg3OrcI<5*Xd~ZZCzn(`du}41mF165mKnuA$cgIOrbU>L z54PQuY{sZSVuSuB*Q}h)j~D{1DW1AvbP<{G1g(M;Vl4+ndiAu0J<4uWmk)fe;!rOl z`R8)z`%s>1Rr&7YD|p*sO(R%=GN|gP7q0a&@)7yU``y~x4H(7|2x@PP9|WR;byW)2 z1LYlg<7%7-K_V(9lfD_dT7OsOdc5i%5{J=E79-IxF8ktFq+euB9%ExkqGNz;m$1(d zfss3e(mzfcoM`Bo&7{5Dt9YT|wG=w70RGnf-YmLsvi|n(r{-W}ChMT7#IN&oo(K=viQRwB=@RJrJF?-v(PvM*Nl$Rb2`6_K z{xDBIVKVr;5Ez+ff~?sp3o@W}6dYP*GDRfjpt7jBKPhTg}@^^5(h*jFWH1&NQ~&KUU&SYtfmT& zU9T=!tgLs+1-DVwWT2_INb#f0*+J<3$Vj6a)M@UKbNAlSy-)4;Tw=nelfY+Yk?|dg zz{mTI5n-jW=9G)N7{gBFY_X5-C3g)*w!X|Xw>9h9uO!zVm-w$Alb!fVjvoL{+Qvqq zyM$aa7mteWLgM@P))0+!p^snucj_K0!svWG>0o0JG??Ib&b3yW;1~*gQ(IEX$GmD? zn}`i8yKP2(pT&{_QzgpU1=01hK^RK3*yiUB6Yt28^%wdJyqyeA5THOSvnNS|Bj2#JH=S{ zwSde_g@L*3s;P20!#}C_9%&6PL}PgiHC3L`eZYpx`wc>TRLDG-TV_XC8=P+}it{E@ zDkI#`_0RpSXa%j8Hm^y+_Xx@2gm}8=IwK1VFO8X7ZoVM z^$oO#m5r<8{`zEK);E7`s`t{U8OGX zKOjhfy2}%FX~$AP76_MuD!-^HFqAw<+V>fay%|Jq7ccx#*qne^mY6DPRc?)RMiot=nn) z1kDS!dNU%$pecg%*MR=9k2A%+d#| zV20#j;E1L#TpT+Bh-G0z5WxWVsa^K@FKwR_$@7bVUxSim&YE3!2e^Agl#W1ey<`>-A&W$^2hdK)>gm-Dl*!KV*XCa5*<;f0J zeAfxsv?u={o+p=k6w$Ez>eHlDHf_g>&@agkRqPcK1XxOsp-SQ`W zxcscT81I=BaON(#&r8E!A^HpFihRy(c(XMeJ_fv2o(jG;kr;HXm9E|G&?4UbCr6Z- z!)Ie)zE4@kqhY;R&NF;E`rv|Su9918>}BA;K?qND`2xp&?vz8Q~7tw3dKBHM)zQWYN==K6Bqh!2$jeebt=$Ex05 zIJzwRUrWko>^!3S{WFF_lXLowgU}qj4!F)_;~Mp6eIJPX4BiXKiy{y-j~ZW`?-M zdsSp{v?uQk>LQWC$;7KRqC3K!%J6M}3g@uPM4HoPC?e-xyjz4SXf3fuNJc}wdv`I+dJx9v!h*u( zcJU-osmJ2hW%nON9R7hTFbUsoU`~O&Ow>qSi~H6(b~_6}mRsd-f`w^Fs7Wec*1DlvdP)00$M;= zA&qD3>GYrE;b<|C1Gx`A!@^dY78SDPcue`b%ua1dH%2U8aR!HLU@J3T@kN98l0g>o4O z)%y3rm<9Hh_peMJEn`0|*vbve5LlnfF44TR-9F}Iq`Kbg_92wheJz6W84kg`t}G=P z?GX72GXJ(8n<#K%GLCUC`VsPWSOmR^w6F*nWmO8Wh*~Ycbwq)}2FvKi<{R7={qK~a zs!wmLFKn$hSd>D7IY40MEi_^g5-7lDIMY>>~~I^lva zIy9+5V$b}T7JlgiqR$5|x?)D`xPd&CqX;-9gc0u4qi4z3yAL7J4ELCM-@8AkSf1nW+VHrtSjE&f4TvPh_v? zT$m@$PWj)J$D|GMld=3t`P%6M+t>nlMs&@cum_cmyY&sWz`cL@(S8^}QNn1>x6MexRbZkJ`A6FLTzD$kt66=ApGA_Hc7exfojI=AEPw!SzxryU^!=L8?2`Yew>iaUGyRK?;^ z;6{iml1JbNHN$Clt?w<|9bcVmjvK^MZ>|Y&Aa6QcCrmCjKl`E4ig23oSU^QnlNK?b zGbd5w9Q>N_K@bQ$a5EnuVNtFJB?M|ztf+9fq+V&dbaB1NL0iUMQzZtpFr)Z7Vu{2z zz|igPvgXImYLF$$i+!fY6``4Y)&47Cs$5?u>}f?zJ~27p#={gSh|Y_q>(HwZE;rRT zupBKTE7lha`(cGOqtT(Po7eW@Vi@eL>Yj!5h<5vmSyHgbGuvtyhgfH8+O~hVu96zN zah(>YR@YcELWSC>M&wnK*W%TeaYj8qR2n|XZJd+Nbfj|He>Rv)d})@HbREpBsdXUbF#P6{ggRVfEB&Q*-BD#Yq1QtG#31~eZOz#GT#j&Eth|rpXW{X z4n}_(h~A^*vLF!P$x#-Y_2nl$kDm?@?NhGy6KBhNBC~ZX4F`htk?76@%UAdD%3XiC zR3ooE)6+!Na72|76e8?)ZyPh?+hUW6c^uov-sBfVLiX-ffJ?v_oV43tGmXEF8^*lo zUmsT69lk?$JH&ARdZq=F5h1B6_wG-PA1Yh;i=#XDigX{h&;CH zT@Rmc*T0S`T XwCy*Qa?ezbW*U01I`SW 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 MNGOQsioW&yf1rcZb^rhX diff --git a/trick_sims/SIM_singlerigidbody/sims/images/trick-dp.png b/trick_sims/SIM_singlerigidbody/sims/images/trick-dp.png deleted file mode 100644 index a7880be983d6d1c21685717144597c4fe2075166..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90375 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 UoD1<3JOi&s59IIX-qZ8`KVF;DU;qFB diff --git a/trick_sims/SIM_singlerigidbody/sims/trick.zip b/trick_sims/SIM_singlerigidbody/sims/trick.zip deleted file mode 100644 index 4e7b07c5f16ff5c1102db8ca380f7533e4969656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217349 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

3Eyu^nc}KcZVUg~T(S5#V0s6Ljl+eQ= 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%0D-_W&^trZ4|R7x;SuQr6E5sG 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 From 621e2cad4583f432b14bc089a20edabba4d34490 Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 30 Oct 2024 07:43:44 -0500 Subject: [PATCH 39/40] Removed unnecessary body.hh and body.cpp from subdirectory. --- .gitignore | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.gitignore b/.gitignore index 9c2ca5122..87af3fb48 100644 --- a/.gitignore +++ b/.gitignore @@ -43,8 +43,3 @@ trickops_logs/ coverage.info *.dSYM *.log -trick_sims/SIM_singlerigidbody/README.md.orig -trick_sims/SIM_singlerigidbody/S_define.orig -trick_sims/SIM_singlerigidbody/RUN_test/IdToColors.txt -trick_sims/SIM_singlerigidbody/RUN_test/input.py.orig -trick_sims/SIM_singlerigidbody/S_overrides.mk.orig From 0ad2ff8f2665a8cd4f5d0d5e2ff4fc464df9481b Mon Sep 17 00:00:00 2001 From: AdityaGirish Date: Wed, 30 Oct 2024 07:48:39 -0500 Subject: [PATCH 40/40] Removed unnecessary files. --- .../models/singlerigidbody/include/body.hh | 75 ---- .../models/singlerigidbody/src/body.cpp | 353 ------------------ 2 files changed, 428 deletions(-) delete mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbody/include/body.hh delete mode 100644 trick_sims/SIM_singlerigidbody/models/singlerigidbody/src/body.cpp diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbody/include/body.hh b/trick_sims/SIM_singlerigidbody/models/singlerigidbody/include/body.hh deleted file mode 100644 index bb47672f1..000000000 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbody/include/body.hh +++ /dev/null @@ -1,75 +0,0 @@ -/********************************************************************* -PURPOSE: (Simulate a single rigid body with six degrees of freedom) -LIBRARY DEPENDENCIES: - ((SingleRigidBody/src/body.o)) -*********************************************************************/ -#ifndef BODY_HH -#define BODY_HH - -class BODY { -public: - BODY(); - ~BODY(); - //Variables - - //Initializes state variables - double POS_INIT[3]; - double VEL_INIT[3]; - double ANGLE_INIT[3]; - double OMEGA_INIT[3]; - - //State variables - double pos[3]; - double vel[3]; - double angle[3]; - double omega[3]; - - double acc[3]; - double omegaDot[3]; - - double force[3]; - double FORCE_INIT[3]; - double force_remain[3]; - double POS_FORCE[3]; - - double torque[3]; - double TORQUE_INIT[3]; - double torque_remain[3]; - - double inertia; - double inertia_matrix[3][3]; - - double radius; - double mass; - double mat_mass[6][6]; - double massmatrix[3][3]; - - double CM[3]; - double CM_skew[3][3]; - double m_CM_skew[3][3]; - double neg_m_CM_skew[3][3]; - - double vec_a[6]; - double vec_b[6]; - - double rotate[3][3]; - double angle_force[3]; - - - // Methods - void default_data(); - void init(); - void derivative(); - int integ(); - - void mass_matrix(); - void rotation_matrix(); - void calcforce(); - void calctorque(); - void calcforce_remain(); - void calctorque_remain(); - void eq_setup(); - void eq_solver(); -}; - -#endif diff --git a/trick_sims/SIM_singlerigidbody/models/singlerigidbody/src/body.cpp b/trick_sims/SIM_singlerigidbody/models/singlerigidbody/src/body.cpp deleted file mode 100644 index e51170f25..000000000 --- a/trick_sims/SIM_singlerigidbody/models/singlerigidbody/src/body.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/************************************************************************** -PURPOSE: (Test trick macros (matrix and vector) as well as trick functions - including euler_matrix, deuler_123, and dLU_Choleski. Perform a - single body motion with six degrees of freedom) -LIBRARY DEPENDENCIES: - ((src/body.o)) -**************************************************************************/ - -#include - -#include "trick/integrator_c_intf.h" -#include "trick/trick_math_proto.h" -#include "trick/trick_math_error.h" -#include "trick/reference_frame.h" -#include "trick/vector_macros.h" -#include "trick/matrix_macros.h" - -#include "../include/body.hh" - -BODY::BODY(){}; -BODY::~BODY(){}; - -/************************************************************************* -FUNCTION: SingleRigidBody::default_data() -PURPOSE:` (Creates an object) -*************************************************************************/ - -void BODY::default_data() { - - //Initializing vectors and matricies to zero. - - for(int i = 0; i<6; i++) - vec_a[i] = 0.0; - - - for(int i = 0; i<6; i++) - vec_b[i] = 0.0; - - - for(int i = 0; i<6; i++) - for(int j = 0; j<6; j++) - mat_mass[i][j] = 0.0; - V_INIT(pos); - V_INIT(vel); - V_INIT(acc); - V_INIT(force); - V_INIT(force_remain); - V_INIT(torque); - V_INIT(torque_remain); - V_INIT(angle); - V_INIT(omega); - V_INIT(omegaDot); - V_INIT(angle_force); - - M_INIT(CM_skew); - M_INIT(m_CM_skew); - M_INIT(massmatrix); - M_INIT(rotate); - - - // Inputs - mass = 20.0; - radius = 2.0; - - POS_INIT[0] = 0.0; - POS_INIT[1] = 0.0; - POS_INIT[2] = 0.0; - - ANGLE_INIT[0] = 0.0; - ANGLE_INIT[1] = 0.0; - ANGLE_INIT[2] = 0.0; - - OMEGA_INIT[0] = 0.0; - OMEGA_INIT[1] = 0.0; - OMEGA_INIT[2] = 0.0; - - FORCE_INIT[0] = 0.0; - FORCE_INIT[1] = 0.0; - FORCE_INIT[2] = 10.0; - - VEL_INIT[0] = 0.0; - VEL_INIT[1] = 0.0; - VEL_INIT[2] = 0.0; - - POS_FORCE[0] = 2.0; - POS_FORCE[1] = 0.0; - POS_FORCE[2] = 0.0; - -}; - -/************************************************************************ -FUNCTION: SingleRigidBody::init() -PURPOSE: (Initializing state variables, creating inertia and CoM skew - matrices) -************************************************************************/ - -void BODY::init() { - - V_COPY(pos, POS_INIT); - V_COPY(vel, VEL_INIT); - V_COPY(angle, ANGLE_INIT); - V_COPY(omega, OMEGA_INIT); - - // Center of mass skew matrix - V_INIT(CM); - - V_SKEW(CM_skew, CM); - - MxSCALAR(m_CM_skew, CM_skew, mass); - MxSCALAR(neg_m_CM_skew, m_CM_skew, -1.0); - - // Inertia matrix - inertia = (2.0/5.0) * mass * radius * radius; - - for(int i = 0; i<1; i++) - for(int j = 0; j<1; j++) - inertia_matrix[i][j] = inertia; - - for(int i = 1; i<2; i++) - for(int j = 1; j<2; j++) - inertia_matrix[i][j] = inertia; - - for(int i = 2; i<3; i++) - for(int j = 2; j<3; j++) - inertia_matrix[i][j] = inertia; - -}; - -/****************************************************************************** -FUNCTION: BODY::mass_matrix() -PURPOSE: (Calculates 6x6 mass matrix M for eq M*a + r = b) -******************************************************************************/ -void BODY::mass_matrix(){ - - // Creates mass matrix for mat_mass() - for(int i = 0; i<1; i++) - for(int j = 0; j<1; j++) - massmatrix[i][j] = mass; - - for(int i = 1; i<2; i++) - for(int j = 1; j<2; j++) - massmatrix[i][j] = mass; - - for(int i = 2; i<3; i++) - for(int j = 2; j<3; j++) - massmatrix[i][j] = mass; - - - // Combines inertia, center of mass, and mass matrix into a 6x6 matrix - for(int i = 0; i<3; i++) - for(int j = 0; j<3; j++) - mat_mass[i][j] = massmatrix[i][j]; - - for(int i = 0; i<3; i++) - for(int j = 3; j<6; j++) - mat_mass[i][j] = neg_m_CM_skew[i][j-3]; - - for(int i = 3; i<6; i++) - for(int j = 0; j<3; j++) - mat_mass[i][j] = m_CM_skew[i-3][j]; - - for(int i = 3; i<6; i++) - for(int j = 3; j<6; j++) - mat_mass[i][j] = inertia_matrix[i-3][j-3]; - -}; - -/***************************************************************************** -FUNCTION: BODY::rotation_matrix() -PURPOSE: (Calculates transformation matrix from provided angles) -*****************************************************************************/ -void BODY::rotation_matrix() { - - // euler_matrix outputs the rotate matrix from angle - euler_matrix(angle, rotate, 0, Roll_Pitch_Yaw); - -}; - -/****************************************************************************** -FUNCTION: BODY::calcforce() -PURPOSE: (Calculates force wrt inertial frame) -******************************************************************************/ -void BODY::calcforce() { - - MxV(force, rotate, FORCE_INIT); - -}; - -/***************************************************************************** -FUNCTION: BODY::calctorque() -PURPOSE: (Calculates torque wrt inertial frame) -*****************************************************************************/ -void BODY::calctorque() { - - double torque_force[3]; - - V_CROSS(torque_force, POS_FORCE, FORCE_INIT); - MxV(torque, rotate, torque_force); - -}; - -/**************************************************************************** -FUNCTION: BODY::calcforce_remain() -PURPOSE: (Calculate remaining force wrt inertial frame) -****************************************************************************/ -void BODY::calcforce_remain() { - - double cross1[3]; - double cross2[3]; - - V_CROSS(cross1, omega, CM); - V_CROSS(cross2, omega, cross1); - V_SCALE(force_remain, cross2, mass); - -}; - - -/*************************************************************************** -FUNCTION: BODY::calctorque_remain() -PURPOSE: (Calculate remaining torque wrt inertial frame) -***************************************************************************/ -void BODY::calctorque_remain() { - - double I_w[3]; - - MxV(I_w, inertia_matrix, omega); - V_CROSS(torque_remain, omega, I_w); - - -}; - -/*************************************************************************** -FUNCTION: BODY::eq_setup() -PURPOSE: (Establishes b column vector for final eq M*a=b) -***************************************************************************/ -void BODY::eq_setup() { - - double remainder_force[3]; - double remainder_torque[3]; - - // Subtracts remaining from force & torque to get vec_b. - V_SUB(remainder_force, force, force_remain); - V_SUB(remainder_torque, torque, torque_remain); - - for(int i = 0; i<3; i++){ - vec_b[i] = remainder_force[i]; - } - - for(int i = 3; i<6; i++){ - vec_b[i] = remainder_torque[i-3]; - } - -}; - -/************************************************************************** -FUNCTION: BODY::eq_solver() -PURPOSE: (Performs choleski decomposition and computes linear and angular - accelerations) -**************************************************************************/ - -void BODY::eq_solver() { - - // Solving a = b * M^-1 - - // Temporary vector for Choleski - double tmp_vec[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; - - // Dynamic memory set up - double **mat_mass_dyn; - double **mat_L; - mat_L = new double*[6]; - mat_mass_dyn = new double*[6]; - - for(int i = 0; i<6; i++) - { - mat_mass_dyn[i] = mat_mass[i]; - mat_L[i] = new double[6]; - } - - - dLU_Choleski(mat_mass_dyn, mat_L, tmp_vec, 6, vec_b, vec_a, 0); - - // Acceleration output - for(int i = 0; i<3; i++) - acc[i] = vec_a[i]; - - // Angular accleration output - for(int i = 0; i<3; i++) - omegaDot[i] = vec_a[i + 3]; - - // Delete dynamic memory - delete[] mat_mass_dyn; - delete[] mat_L; - -}; - -/*************************************************************************** -FUNCTION: BODY::derivative() -PURPOSE: (Calls all functions in desired order for calculations) -***************************************************************************/ -void BODY::derivative() { - - mass_matrix(); - rotation_matrix(); - calcforce(); - calctorque(); - calcforce_remain(); - calctorque_remain(); - eq_setup(); - eq_solver(); - -}; - -/*************************************************************************** -FUNCTION: BODY::integrate() -PURPOSE: (Sets up trick integration) -***************************************************************************/ - -#ifndef IN_MAKE -int BODY::integ() { - - int integration_step; - - load_state( - &pos[0], &pos[1], &pos[2], - &vel[0], &vel[1], &vel[2], - &angle[0], &angle[1], &angle[2], - &omega[0], &omega[1], &omega[2], - - NULL); - - load_deriv( - &vel[0], &vel[1], &vel[2], - &acc[0], &acc[1], &acc[2], - &omega[0], &omega[1], &omega[2], - &omegaDot[0], &omegaDot[1], &omegaDot[2], - - NULL); - - integration_step = integrate(); - - unload_state( - &pos[0], &pos[1], &pos[2], - &vel[0], &vel[1], &vel[2], - &angle[0], &angle[1], &angle[2], - &omega[0], &omega[1], &omega[2], - - NULL); - - return(integration_step); - -}; -#endif