Line data Source code
1 :
2 : /*
3 : * ALMA - Atacama Large Millimeter Array
4 : * (c) European Southern Observatory, 2002
5 : * (c) Associated Universities Inc., 2002
6 : * Copyright by ESO (in the framework of the ALMA collaboration),
7 : * Copyright by AUI (in the framework of the ALMA collaboration),
8 : * All rights reserved.
9 : *
10 : * This library is free software; you can redistribute it and/or
11 : * modify it under the terms of the GNU Lesser General Public
12 : * License as published by the Free software Foundation; either
13 : * version 2.1 of the License, or (at your option) any later version.
14 : *
15 : * This library is distributed in the hope that it will be useful,
16 : * but WITHOUT ANY WARRANTY, without even the implied warranty of
17 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 : * Lesser General Public License for more details.
19 : *
20 : * You should have received a copy of the GNU Lesser General Public
21 : * License along with this library; if not, write to the Free Software
22 : * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
23 : * MA 02111-1307 USA
24 : *
25 : * Warning!
26 : * --------------------------------------------------------------------
27 : * | This is generated code! Do not modify this file. |
28 : * | If you do, all changes will be lost when the file is re-generated. |
29 : * --------------------------------------------------------------------
30 : *
31 : * File EphemerisRow.cpp
32 : */
33 :
34 : #include <vector>
35 : #include <set>
36 :
37 : #include <alma/ASDM/ASDM.h>
38 : #include <alma/ASDM/EphemerisRow.h>
39 : #include <alma/ASDM/EphemerisTable.h>
40 :
41 :
42 : using asdm::ASDM;
43 : using asdm::EphemerisRow;
44 : using asdm::EphemerisTable;
45 :
46 :
47 : #include <alma/ASDM/Parser.h>
48 :
49 : #include <alma/ASDM/EnumerationParser.h>
50 : #include <alma/ASDM/ASDMValuesParser.h>
51 :
52 : #include <alma/ASDM/InvalidArgumentException.h>
53 :
54 : using namespace std;
55 :
56 : namespace asdm {
57 870 : EphemerisRow::~EphemerisRow() {
58 870 : }
59 :
60 : /**
61 : * Return the table to which this row belongs.
62 : */
63 0 : EphemerisTable &EphemerisRow::getTable() const {
64 0 : return table;
65 : }
66 :
67 0 : bool EphemerisRow::isAdded() const {
68 0 : return hasBeenAdded;
69 : }
70 :
71 435 : void EphemerisRow::isAdded(bool added) {
72 435 : hasBeenAdded = added;
73 435 : }
74 :
75 : #ifndef WITHOUT_ACS
76 : using asdmIDL::EphemerisRowIDL;
77 : #endif
78 :
79 : #ifndef WITHOUT_ACS
80 : /**
81 : * Return this row in the form of an IDL struct.
82 : * @return The values of this row as a EphemerisRowIDL struct.
83 : */
84 : EphemerisRowIDL *EphemerisRow::toIDL() const {
85 : EphemerisRowIDL *x = new EphemerisRowIDL ();
86 :
87 : // Fill the IDL structure.
88 :
89 :
90 :
91 :
92 :
93 :
94 :
95 : x->timeInterval = timeInterval.toIDLArrayTimeInterval();
96 :
97 :
98 :
99 :
100 :
101 :
102 :
103 :
104 :
105 :
106 : x->ephemerisId = ephemerisId;
107 :
108 :
109 :
110 :
111 :
112 :
113 :
114 :
115 :
116 :
117 : x->observerLocation.length(observerLocation.size());
118 : for (unsigned int i = 0; i < observerLocation.size(); ++i) {
119 :
120 :
121 : x->observerLocation[i] = observerLocation.at(i);
122 :
123 :
124 : }
125 :
126 :
127 :
128 :
129 :
130 :
131 :
132 :
133 :
134 :
135 : x->equinoxEquator = equinoxEquator;
136 :
137 :
138 :
139 :
140 :
141 :
142 :
143 :
144 :
145 :
146 :
147 : x->numPolyDir = numPolyDir;
148 :
149 :
150 :
151 :
152 :
153 :
154 :
155 :
156 :
157 :
158 : x->dir.length(dir.size());
159 : for (unsigned int i = 0; i < dir.size(); i++) {
160 : x->dir[i].length(dir.at(i).size());
161 : }
162 :
163 : for (unsigned int i = 0; i < dir.size() ; i++)
164 : for (unsigned int j = 0; j < dir.at(i).size(); j++)
165 :
166 :
167 : x->dir[i][j] = dir.at(i).at(j);
168 :
169 :
170 :
171 :
172 :
173 :
174 :
175 :
176 :
177 :
178 :
179 :
180 :
181 : x->numPolyDist = numPolyDist;
182 :
183 :
184 :
185 :
186 :
187 :
188 :
189 :
190 :
191 :
192 : x->distance.length(distance.size());
193 : for (unsigned int i = 0; i < distance.size(); ++i) {
194 :
195 :
196 : x->distance[i] = distance.at(i);
197 :
198 :
199 : }
200 :
201 :
202 :
203 :
204 :
205 :
206 :
207 :
208 :
209 : x->timeOrigin = timeOrigin.toIDLArrayTime();
210 :
211 :
212 :
213 :
214 :
215 :
216 :
217 :
218 :
219 :
220 : x->origin = CORBA::string_dup(origin.c_str());
221 :
222 :
223 :
224 :
225 :
226 :
227 :
228 :
229 : x->numPolyRadVelExists = numPolyRadVelExists;
230 :
231 :
232 :
233 :
234 : x->numPolyRadVel = numPolyRadVel;
235 :
236 :
237 :
238 :
239 :
240 :
241 :
242 :
243 : x->radVelExists = radVelExists;
244 :
245 :
246 :
247 : x->radVel.length(radVel.size());
248 : for (unsigned int i = 0; i < radVel.size(); ++i) {
249 :
250 :
251 : x->radVel[i] = radVel.at(i);
252 :
253 :
254 : }
255 :
256 :
257 :
258 :
259 :
260 :
261 :
262 :
263 : return x;
264 :
265 : }
266 :
267 : void EphemerisRow::toIDL(asdmIDL::EphemerisRowIDL& x) const {
268 : // Set the x's fields.
269 :
270 :
271 :
272 :
273 :
274 :
275 :
276 : x.timeInterval = timeInterval.toIDLArrayTimeInterval();
277 :
278 :
279 :
280 :
281 :
282 :
283 :
284 :
285 :
286 :
287 : x.ephemerisId = ephemerisId;
288 :
289 :
290 :
291 :
292 :
293 :
294 :
295 :
296 :
297 :
298 : x.observerLocation.length(observerLocation.size());
299 : for (unsigned int i = 0; i < observerLocation.size(); ++i) {
300 :
301 :
302 : x.observerLocation[i] = observerLocation.at(i);
303 :
304 :
305 : }
306 :
307 :
308 :
309 :
310 :
311 :
312 :
313 :
314 :
315 :
316 : x.equinoxEquator = equinoxEquator;
317 :
318 :
319 :
320 :
321 :
322 :
323 :
324 :
325 :
326 :
327 :
328 : x.numPolyDir = numPolyDir;
329 :
330 :
331 :
332 :
333 :
334 :
335 :
336 :
337 :
338 :
339 : x.dir.length(dir.size());
340 : for (unsigned int i = 0; i < dir.size(); i++) {
341 : x.dir[i].length(dir.at(i).size());
342 : }
343 :
344 : for (unsigned int i = 0; i < dir.size() ; i++)
345 : for (unsigned int j = 0; j < dir.at(i).size(); j++)
346 :
347 :
348 : x.dir[i][j] = dir.at(i).at(j);
349 :
350 :
351 :
352 :
353 :
354 :
355 :
356 :
357 :
358 :
359 :
360 :
361 :
362 : x.numPolyDist = numPolyDist;
363 :
364 :
365 :
366 :
367 :
368 :
369 :
370 :
371 :
372 :
373 : x.distance.length(distance.size());
374 : for (unsigned int i = 0; i < distance.size(); ++i) {
375 :
376 :
377 : x.distance[i] = distance.at(i);
378 :
379 :
380 : }
381 :
382 :
383 :
384 :
385 :
386 :
387 :
388 :
389 :
390 : x.timeOrigin = timeOrigin.toIDLArrayTime();
391 :
392 :
393 :
394 :
395 :
396 :
397 :
398 :
399 :
400 :
401 : x.origin = CORBA::string_dup(origin.c_str());
402 :
403 :
404 :
405 :
406 :
407 :
408 :
409 :
410 : x.numPolyRadVelExists = numPolyRadVelExists;
411 :
412 :
413 :
414 :
415 : x.numPolyRadVel = numPolyRadVel;
416 :
417 :
418 :
419 :
420 :
421 :
422 :
423 :
424 : x.radVelExists = radVelExists;
425 :
426 :
427 :
428 : x.radVel.length(radVel.size());
429 : for (unsigned int i = 0; i < radVel.size(); ++i) {
430 :
431 :
432 : x.radVel[i] = radVel.at(i);
433 :
434 :
435 : }
436 :
437 :
438 :
439 :
440 :
441 :
442 :
443 :
444 : }
445 : #endif
446 :
447 :
448 : #ifndef WITHOUT_ACS
449 : /**
450 : * Fill the values of this row from the IDL struct EphemerisRowIDL.
451 : * @param x The IDL struct containing the values used to fill this row.
452 : */
453 : void EphemerisRow::setFromIDL (EphemerisRowIDL x){
454 : try {
455 : // Fill the values from x.
456 :
457 :
458 :
459 :
460 :
461 :
462 : setTimeInterval(ArrayTimeInterval (x.timeInterval));
463 :
464 :
465 :
466 :
467 :
468 :
469 :
470 :
471 :
472 : setEphemerisId(x.ephemerisId);
473 :
474 :
475 :
476 :
477 :
478 :
479 :
480 :
481 :
482 : observerLocation .clear();
483 : for (unsigned int i = 0; i <x.observerLocation.length(); ++i) {
484 :
485 : observerLocation.push_back(x.observerLocation[i]);
486 :
487 : }
488 :
489 :
490 :
491 :
492 :
493 :
494 :
495 :
496 :
497 : setEquinoxEquator(x.equinoxEquator);
498 :
499 :
500 :
501 :
502 :
503 :
504 :
505 :
506 :
507 : setNumPolyDir(x.numPolyDir);
508 :
509 :
510 :
511 :
512 :
513 :
514 :
515 :
516 :
517 : dir .clear();
518 :
519 : vector<double> v_aux_dir;
520 :
521 : for (unsigned int i = 0; i < x.dir.length(); ++i) {
522 : v_aux_dir.clear();
523 : for (unsigned int j = 0; j < x.dir[0].length(); ++j) {
524 :
525 : v_aux_dir.push_back(x.dir[i][j]);
526 :
527 : }
528 : dir.push_back(v_aux_dir);
529 : }
530 :
531 :
532 :
533 :
534 :
535 :
536 :
537 :
538 :
539 : setNumPolyDist(x.numPolyDist);
540 :
541 :
542 :
543 :
544 :
545 :
546 :
547 :
548 :
549 : distance .clear();
550 : for (unsigned int i = 0; i <x.distance.length(); ++i) {
551 :
552 : distance.push_back(x.distance[i]);
553 :
554 : }
555 :
556 :
557 :
558 :
559 :
560 :
561 :
562 :
563 :
564 : setTimeOrigin(ArrayTime (x.timeOrigin));
565 :
566 :
567 :
568 :
569 :
570 :
571 :
572 :
573 :
574 : setOrigin(string (x.origin));
575 :
576 :
577 :
578 :
579 :
580 :
581 :
582 : numPolyRadVelExists = x.numPolyRadVelExists;
583 : if (x.numPolyRadVelExists) {
584 :
585 :
586 :
587 : setNumPolyRadVel(x.numPolyRadVel);
588 :
589 :
590 :
591 : }
592 :
593 :
594 :
595 :
596 :
597 : radVelExists = x.radVelExists;
598 : if (x.radVelExists) {
599 :
600 :
601 :
602 : radVel .clear();
603 : for (unsigned int i = 0; i <x.radVel.length(); ++i) {
604 :
605 : radVel.push_back(x.radVel[i]);
606 :
607 : }
608 :
609 :
610 :
611 : }
612 :
613 :
614 :
615 :
616 :
617 :
618 : } catch (const IllegalAccessException &err) {
619 : throw ConversionException (err.getMessage(),"Ephemeris");
620 : }
621 : }
622 : #endif
623 :
624 : /**
625 : * Return this row in the form of an XML string.
626 : * @return The values of this row as an XML string.
627 : */
628 0 : string EphemerisRow::toXML() const {
629 0 : string buf;
630 0 : buf.append("<row> \n");
631 :
632 :
633 :
634 :
635 :
636 :
637 0 : Parser::toXML(timeInterval, "timeInterval", buf);
638 :
639 :
640 :
641 :
642 :
643 :
644 :
645 0 : Parser::toXML(ephemerisId, "ephemerisId", buf);
646 :
647 :
648 :
649 :
650 :
651 :
652 :
653 0 : Parser::toXML(observerLocation, "observerLocation", buf);
654 :
655 :
656 :
657 :
658 :
659 :
660 :
661 0 : Parser::toXML(equinoxEquator, "equinoxEquator", buf);
662 :
663 :
664 :
665 :
666 :
667 :
668 :
669 0 : Parser::toXML(numPolyDir, "numPolyDir", buf);
670 :
671 :
672 :
673 :
674 :
675 :
676 :
677 0 : Parser::toXML(dir, "dir", buf);
678 :
679 :
680 :
681 :
682 :
683 :
684 :
685 0 : Parser::toXML(numPolyDist, "numPolyDist", buf);
686 :
687 :
688 :
689 :
690 :
691 :
692 :
693 0 : Parser::toXML(distance, "distance", buf);
694 :
695 :
696 :
697 :
698 :
699 :
700 :
701 0 : Parser::toXML(timeOrigin, "timeOrigin", buf);
702 :
703 :
704 :
705 :
706 :
707 :
708 :
709 0 : Parser::toXML(origin, "origin", buf);
710 :
711 :
712 :
713 :
714 :
715 :
716 0 : if (numPolyRadVelExists) {
717 :
718 :
719 0 : Parser::toXML(numPolyRadVel, "numPolyRadVel", buf);
720 :
721 :
722 : }
723 :
724 :
725 :
726 :
727 :
728 0 : if (radVelExists) {
729 :
730 :
731 0 : Parser::toXML(radVel, "radVel", buf);
732 :
733 :
734 : }
735 :
736 :
737 :
738 :
739 :
740 :
741 :
742 0 : buf.append("</row>\n");
743 0 : return buf;
744 0 : }
745 :
746 : /**
747 : * Fill the values of this row from an XML string
748 : * that was produced by the toXML() method.
749 : * @param x The XML string being used to set the values of this row.
750 : */
751 435 : void EphemerisRow::setFromXML (string rowDoc) {
752 435 : Parser row(rowDoc);
753 435 : string s = "";
754 : try {
755 :
756 :
757 :
758 :
759 :
760 435 : setTimeInterval(Parser::getArrayTimeInterval("timeInterval","Ephemeris",rowDoc));
761 :
762 :
763 :
764 :
765 :
766 :
767 :
768 435 : setEphemerisId(Parser::getInteger("ephemerisId","Ephemeris",rowDoc));
769 :
770 :
771 :
772 :
773 :
774 :
775 :
776 :
777 435 : setObserverLocation(Parser::get1DDouble("observerLocation","Ephemeris",rowDoc));
778 :
779 :
780 :
781 :
782 :
783 :
784 :
785 :
786 435 : setEquinoxEquator(Parser::getDouble("equinoxEquator","Ephemeris",rowDoc));
787 :
788 :
789 :
790 :
791 :
792 :
793 :
794 435 : setNumPolyDir(Parser::getInteger("numPolyDir","Ephemeris",rowDoc));
795 :
796 :
797 :
798 :
799 :
800 :
801 :
802 :
803 435 : setDir(Parser::get2DDouble("dir","Ephemeris",rowDoc));
804 :
805 :
806 :
807 :
808 :
809 :
810 :
811 :
812 435 : setNumPolyDist(Parser::getInteger("numPolyDist","Ephemeris",rowDoc));
813 :
814 :
815 :
816 :
817 :
818 :
819 :
820 :
821 435 : setDistance(Parser::get1DDouble("distance","Ephemeris",rowDoc));
822 :
823 :
824 :
825 :
826 :
827 :
828 :
829 :
830 435 : setTimeOrigin(Parser::getArrayTime("timeOrigin","Ephemeris",rowDoc));
831 :
832 :
833 :
834 :
835 :
836 :
837 :
838 435 : setOrigin(Parser::getString("origin","Ephemeris",rowDoc));
839 :
840 :
841 :
842 :
843 :
844 :
845 435 : if (row.isStr("<numPolyRadVel>")) {
846 :
847 432 : setNumPolyRadVel(Parser::getInteger("numPolyRadVel","Ephemeris",rowDoc));
848 :
849 : }
850 :
851 :
852 :
853 :
854 :
855 435 : if (row.isStr("<radVel>")) {
856 :
857 :
858 432 : setRadVel(Parser::get1DDouble("radVel","Ephemeris",rowDoc));
859 :
860 :
861 : }
862 :
863 :
864 :
865 :
866 :
867 :
868 0 : } catch (const IllegalAccessException &err) {
869 0 : throw ConversionException (err.getMessage(),"Ephemeris");
870 0 : }
871 435 : }
872 :
873 0 : void EphemerisRow::toBin(EndianOSStream& eoss) {
874 :
875 :
876 :
877 :
878 :
879 0 : timeInterval.toBin(eoss);
880 :
881 :
882 :
883 :
884 :
885 :
886 :
887 0 : eoss.writeInt(ephemerisId);
888 :
889 :
890 :
891 :
892 :
893 :
894 :
895 :
896 :
897 0 : eoss.writeInt((int) observerLocation.size());
898 0 : for (unsigned int i = 0; i < observerLocation.size(); i++)
899 :
900 0 : eoss.writeDouble(observerLocation.at(i));
901 :
902 :
903 :
904 :
905 :
906 :
907 :
908 :
909 :
910 :
911 0 : eoss.writeDouble(equinoxEquator);
912 :
913 :
914 :
915 :
916 :
917 :
918 :
919 :
920 0 : eoss.writeInt(numPolyDir);
921 :
922 :
923 :
924 :
925 :
926 :
927 :
928 :
929 :
930 0 : eoss.writeInt((int) dir.size());
931 0 : eoss.writeInt((int) dir.at(0).size());
932 0 : for (unsigned int i = 0; i < dir.size(); i++)
933 0 : for (unsigned int j = 0; j < dir.at(0).size(); j++)
934 :
935 0 : eoss.writeDouble(dir.at(i).at(j));
936 :
937 :
938 :
939 :
940 :
941 :
942 :
943 :
944 :
945 :
946 0 : eoss.writeInt(numPolyDist);
947 :
948 :
949 :
950 :
951 :
952 :
953 :
954 :
955 :
956 0 : eoss.writeInt((int) distance.size());
957 0 : for (unsigned int i = 0; i < distance.size(); i++)
958 :
959 0 : eoss.writeDouble(distance.at(i));
960 :
961 :
962 :
963 :
964 :
965 :
966 :
967 :
968 :
969 0 : timeOrigin.toBin(eoss);
970 :
971 :
972 :
973 :
974 :
975 :
976 :
977 0 : eoss.writeString(origin);
978 :
979 :
980 :
981 :
982 :
983 :
984 :
985 0 : eoss.writeBoolean(numPolyRadVelExists);
986 0 : if (numPolyRadVelExists) {
987 :
988 :
989 :
990 :
991 :
992 0 : eoss.writeInt(numPolyRadVel);
993 :
994 :
995 :
996 :
997 : }
998 :
999 0 : eoss.writeBoolean(radVelExists);
1000 0 : if (radVelExists) {
1001 :
1002 :
1003 :
1004 :
1005 :
1006 :
1007 0 : eoss.writeInt((int) radVel.size());
1008 0 : for (unsigned int i = 0; i < radVel.size(); i++)
1009 :
1010 0 : eoss.writeDouble(radVel.at(i));
1011 :
1012 :
1013 :
1014 :
1015 :
1016 :
1017 : }
1018 :
1019 0 : }
1020 :
1021 0 : void EphemerisRow::timeIntervalFromBin(EndianIStream& eis) {
1022 :
1023 :
1024 :
1025 :
1026 0 : timeInterval = ArrayTimeInterval::fromBin(eis);
1027 :
1028 :
1029 :
1030 0 : }
1031 0 : void EphemerisRow::ephemerisIdFromBin(EndianIStream& eis) {
1032 :
1033 :
1034 :
1035 :
1036 :
1037 0 : ephemerisId = eis.readInt();
1038 :
1039 :
1040 :
1041 :
1042 0 : }
1043 0 : void EphemerisRow::observerLocationFromBin(EndianIStream& eis) {
1044 :
1045 :
1046 :
1047 :
1048 :
1049 :
1050 0 : observerLocation.clear();
1051 :
1052 0 : unsigned int observerLocationDim1 = eis.readInt();
1053 0 : for (unsigned int i = 0 ; i < observerLocationDim1; i++)
1054 :
1055 0 : observerLocation.push_back(eis.readDouble());
1056 :
1057 :
1058 :
1059 :
1060 :
1061 :
1062 0 : }
1063 0 : void EphemerisRow::equinoxEquatorFromBin(EndianIStream& eis) {
1064 :
1065 :
1066 :
1067 :
1068 :
1069 0 : equinoxEquator = eis.readDouble();
1070 :
1071 :
1072 :
1073 :
1074 0 : }
1075 0 : void EphemerisRow::numPolyDirFromBin(EndianIStream& eis) {
1076 :
1077 :
1078 :
1079 :
1080 :
1081 0 : numPolyDir = eis.readInt();
1082 :
1083 :
1084 :
1085 :
1086 0 : }
1087 0 : void EphemerisRow::dirFromBin(EndianIStream& eis) {
1088 :
1089 :
1090 :
1091 :
1092 :
1093 :
1094 0 : dir.clear();
1095 :
1096 0 : unsigned int dirDim1 = eis.readInt();
1097 0 : unsigned int dirDim2 = eis.readInt();
1098 :
1099 0 : vector <double> dirAux1;
1100 :
1101 0 : for (unsigned int i = 0; i < dirDim1; i++) {
1102 0 : dirAux1.clear();
1103 0 : for (unsigned int j = 0; j < dirDim2 ; j++)
1104 :
1105 0 : dirAux1.push_back(eis.readDouble());
1106 :
1107 0 : dir.push_back(dirAux1);
1108 : }
1109 :
1110 :
1111 :
1112 :
1113 :
1114 :
1115 0 : }
1116 0 : void EphemerisRow::numPolyDistFromBin(EndianIStream& eis) {
1117 :
1118 :
1119 :
1120 :
1121 :
1122 0 : numPolyDist = eis.readInt();
1123 :
1124 :
1125 :
1126 :
1127 0 : }
1128 0 : void EphemerisRow::distanceFromBin(EndianIStream& eis) {
1129 :
1130 :
1131 :
1132 :
1133 :
1134 :
1135 0 : distance.clear();
1136 :
1137 0 : unsigned int distanceDim1 = eis.readInt();
1138 0 : for (unsigned int i = 0 ; i < distanceDim1; i++)
1139 :
1140 0 : distance.push_back(eis.readDouble());
1141 :
1142 :
1143 :
1144 :
1145 :
1146 :
1147 0 : }
1148 0 : void EphemerisRow::timeOriginFromBin(EndianIStream& eis) {
1149 :
1150 :
1151 :
1152 :
1153 0 : timeOrigin = ArrayTime::fromBin(eis);
1154 :
1155 :
1156 :
1157 0 : }
1158 0 : void EphemerisRow::originFromBin(EndianIStream& eis) {
1159 :
1160 :
1161 :
1162 :
1163 :
1164 0 : origin = eis.readString();
1165 :
1166 :
1167 :
1168 :
1169 0 : }
1170 :
1171 0 : void EphemerisRow::numPolyRadVelFromBin(EndianIStream& eis) {
1172 :
1173 0 : numPolyRadVelExists = eis.readBoolean();
1174 0 : if (numPolyRadVelExists) {
1175 :
1176 :
1177 :
1178 :
1179 :
1180 0 : numPolyRadVel = eis.readInt();
1181 :
1182 :
1183 :
1184 :
1185 : }
1186 :
1187 0 : }
1188 0 : void EphemerisRow::radVelFromBin(EndianIStream& eis) {
1189 :
1190 0 : radVelExists = eis.readBoolean();
1191 0 : if (radVelExists) {
1192 :
1193 :
1194 :
1195 :
1196 :
1197 :
1198 0 : radVel.clear();
1199 :
1200 0 : unsigned int radVelDim1 = eis.readInt();
1201 0 : for (unsigned int i = 0 ; i < radVelDim1; i++)
1202 :
1203 0 : radVel.push_back(eis.readDouble());
1204 :
1205 :
1206 :
1207 :
1208 :
1209 :
1210 : }
1211 :
1212 0 : }
1213 :
1214 :
1215 0 : EphemerisRow* EphemerisRow::fromBin(EndianIStream& eis, EphemerisTable& table, const vector<string>& attributesSeq) {
1216 0 : EphemerisRow* row = new EphemerisRow(table);
1217 :
1218 0 : map<string, EphemerisAttributeFromBin>::iterator iter ;
1219 0 : for (unsigned int i = 0; i < attributesSeq.size(); i++) {
1220 0 : iter = row->fromBinMethods.find(attributesSeq.at(i));
1221 0 : if (iter != row->fromBinMethods.end()) {
1222 0 : (row->*(row->fromBinMethods[ attributesSeq.at(i) ] ))(eis);
1223 : }
1224 : else {
1225 0 : BinaryAttributeReaderFunctor* functorP = table.getUnknownAttributeBinaryReader(attributesSeq.at(i));
1226 0 : if (functorP)
1227 0 : (*functorP)(eis);
1228 : else
1229 0 : throw ConversionException("There is not method to read an attribute '"+attributesSeq.at(i)+"'.", "EphemerisTable");
1230 : }
1231 :
1232 : }
1233 0 : return row;
1234 : }
1235 :
1236 : //
1237 : // A collection of methods to set the value of the attributes from their textual value in the XML representation
1238 : // of one row.
1239 : //
1240 :
1241 : // Convert a string into an ArrayTimeInterval
1242 0 : void EphemerisRow::timeIntervalFromText(const string & s) {
1243 :
1244 :
1245 0 : timeInterval = ASDMValuesParser::parse<ArrayTimeInterval>(s);
1246 :
1247 :
1248 0 : }
1249 :
1250 :
1251 : // Convert a string into an int
1252 0 : void EphemerisRow::ephemerisIdFromText(const string & s) {
1253 :
1254 :
1255 0 : ephemerisId = ASDMValuesParser::parse<int>(s);
1256 :
1257 :
1258 0 : }
1259 :
1260 :
1261 : // Convert a string into an double
1262 0 : void EphemerisRow::observerLocationFromText(const string & s) {
1263 :
1264 :
1265 0 : observerLocation = ASDMValuesParser::parse1D<double>(s);
1266 :
1267 :
1268 0 : }
1269 :
1270 :
1271 : // Convert a string into an double
1272 0 : void EphemerisRow::equinoxEquatorFromText(const string & s) {
1273 :
1274 :
1275 0 : equinoxEquator = ASDMValuesParser::parse<double>(s);
1276 :
1277 :
1278 0 : }
1279 :
1280 :
1281 : // Convert a string into an int
1282 0 : void EphemerisRow::numPolyDirFromText(const string & s) {
1283 :
1284 :
1285 0 : numPolyDir = ASDMValuesParser::parse<int>(s);
1286 :
1287 :
1288 0 : }
1289 :
1290 :
1291 : // Convert a string into an double
1292 0 : void EphemerisRow::dirFromText(const string & s) {
1293 :
1294 :
1295 0 : dir = ASDMValuesParser::parse2D<double>(s);
1296 :
1297 :
1298 0 : }
1299 :
1300 :
1301 : // Convert a string into an int
1302 0 : void EphemerisRow::numPolyDistFromText(const string & s) {
1303 :
1304 :
1305 0 : numPolyDist = ASDMValuesParser::parse<int>(s);
1306 :
1307 :
1308 0 : }
1309 :
1310 :
1311 : // Convert a string into an double
1312 0 : void EphemerisRow::distanceFromText(const string & s) {
1313 :
1314 :
1315 0 : distance = ASDMValuesParser::parse1D<double>(s);
1316 :
1317 :
1318 0 : }
1319 :
1320 :
1321 : // Convert a string into an ArrayTime
1322 0 : void EphemerisRow::timeOriginFromText(const string & s) {
1323 :
1324 :
1325 0 : timeOrigin = ASDMValuesParser::parse<ArrayTime>(s);
1326 :
1327 :
1328 0 : }
1329 :
1330 :
1331 : // Convert a string into an String
1332 0 : void EphemerisRow::originFromText(const string & s) {
1333 :
1334 :
1335 0 : origin = ASDMValuesParser::parse<string>(s);
1336 :
1337 :
1338 0 : }
1339 :
1340 :
1341 :
1342 : // Convert a string into an int
1343 0 : void EphemerisRow::numPolyRadVelFromText(const string & s) {
1344 0 : numPolyRadVelExists = true;
1345 :
1346 :
1347 0 : numPolyRadVel = ASDMValuesParser::parse<int>(s);
1348 :
1349 :
1350 0 : }
1351 :
1352 :
1353 : // Convert a string into an double
1354 0 : void EphemerisRow::radVelFromText(const string & s) {
1355 0 : radVelExists = true;
1356 :
1357 :
1358 0 : radVel = ASDMValuesParser::parse1D<double>(s);
1359 :
1360 :
1361 0 : }
1362 :
1363 :
1364 :
1365 0 : void EphemerisRow::fromText(const std::string& attributeName, const std::string& t) {
1366 0 : map<string, EphemerisAttributeFromText>::iterator iter;
1367 0 : if ((iter = fromTextMethods.find(attributeName)) == fromTextMethods.end())
1368 0 : throw ConversionException("I do not know what to do with '"+attributeName+"' and its content '"+t+"' (while parsing an XML document)", "EphemerisTable");
1369 0 : (this->*(iter->second))(t);
1370 0 : }
1371 :
1372 : ////////////////////////////////////////////////
1373 : // Intrinsic Table Attributes getters/setters //
1374 : ////////////////////////////////////////////////
1375 :
1376 :
1377 :
1378 :
1379 : /**
1380 : * Get timeInterval.
1381 : * @return timeInterval as ArrayTimeInterval
1382 : */
1383 468 : ArrayTimeInterval EphemerisRow::getTimeInterval() const {
1384 :
1385 468 : return timeInterval;
1386 : }
1387 :
1388 : /**
1389 : * Set timeInterval with the specified ArrayTimeInterval.
1390 : * @param timeInterval The ArrayTimeInterval value to which timeInterval is to be set.
1391 :
1392 :
1393 :
1394 : * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
1395 :
1396 : */
1397 435 : void EphemerisRow::setTimeInterval (ArrayTimeInterval timeInterval) {
1398 :
1399 :
1400 435 : if (hasBeenAdded) {
1401 :
1402 0 : throw IllegalAccessException("timeInterval", "Ephemeris");
1403 :
1404 : }
1405 :
1406 435 : this->timeInterval = timeInterval;
1407 :
1408 435 : }
1409 :
1410 :
1411 :
1412 :
1413 :
1414 :
1415 : /**
1416 : * Get ephemerisId.
1417 : * @return ephemerisId as int
1418 : */
1419 870 : int EphemerisRow::getEphemerisId() const {
1420 :
1421 870 : return ephemerisId;
1422 : }
1423 :
1424 : /**
1425 : * Set ephemerisId with the specified int.
1426 : * @param ephemerisId The int value to which ephemerisId is to be set.
1427 :
1428 :
1429 :
1430 : * @throw IllegalAccessException If an attempt is made to change this field after is has been added to the table.
1431 :
1432 : */
1433 435 : void EphemerisRow::setEphemerisId (int ephemerisId) {
1434 :
1435 :
1436 435 : if (hasBeenAdded) {
1437 :
1438 0 : throw IllegalAccessException("ephemerisId", "Ephemeris");
1439 :
1440 : }
1441 :
1442 435 : this->ephemerisId = ephemerisId;
1443 :
1444 435 : }
1445 :
1446 :
1447 :
1448 :
1449 :
1450 :
1451 : /**
1452 : * Get observerLocation.
1453 : * @return observerLocation as std::vector<double >
1454 : */
1455 15 : std::vector<double > EphemerisRow::getObserverLocation() const {
1456 :
1457 15 : return observerLocation;
1458 : }
1459 :
1460 : /**
1461 : * Set observerLocation with the specified std::vector<double >.
1462 : * @param observerLocation The std::vector<double > value to which observerLocation is to be set.
1463 :
1464 :
1465 :
1466 : */
1467 435 : void EphemerisRow::setObserverLocation (std::vector<double > observerLocation) {
1468 :
1469 :
1470 435 : if (hasBeenAdded) {
1471 :
1472 : }
1473 :
1474 435 : this->observerLocation = observerLocation;
1475 :
1476 435 : }
1477 :
1478 :
1479 :
1480 :
1481 :
1482 :
1483 : /**
1484 : * Get equinoxEquator.
1485 : * @return equinoxEquator as double
1486 : */
1487 15 : double EphemerisRow::getEquinoxEquator() const {
1488 :
1489 15 : return equinoxEquator;
1490 : }
1491 :
1492 : /**
1493 : * Set equinoxEquator with the specified double.
1494 : * @param equinoxEquator The double value to which equinoxEquator is to be set.
1495 :
1496 :
1497 :
1498 : */
1499 435 : void EphemerisRow::setEquinoxEquator (double equinoxEquator) {
1500 :
1501 :
1502 435 : if (hasBeenAdded) {
1503 :
1504 : }
1505 :
1506 435 : this->equinoxEquator = equinoxEquator;
1507 :
1508 435 : }
1509 :
1510 :
1511 :
1512 :
1513 :
1514 :
1515 : /**
1516 : * Get numPolyDir.
1517 : * @return numPolyDir as int
1518 : */
1519 435 : int EphemerisRow::getNumPolyDir() const {
1520 :
1521 435 : return numPolyDir;
1522 : }
1523 :
1524 : /**
1525 : * Set numPolyDir with the specified int.
1526 : * @param numPolyDir The int value to which numPolyDir is to be set.
1527 :
1528 :
1529 :
1530 : */
1531 435 : void EphemerisRow::setNumPolyDir (int numPolyDir) {
1532 :
1533 :
1534 435 : if (hasBeenAdded) {
1535 :
1536 : }
1537 :
1538 435 : this->numPolyDir = numPolyDir;
1539 :
1540 435 : }
1541 :
1542 :
1543 :
1544 :
1545 :
1546 :
1547 : /**
1548 : * Get dir.
1549 : * @return dir as std::vector<std::vector<double > >
1550 : */
1551 435 : std::vector<std::vector<double > > EphemerisRow::getDir() const {
1552 :
1553 435 : return dir;
1554 : }
1555 :
1556 : /**
1557 : * Set dir with the specified std::vector<std::vector<double > >.
1558 : * @param dir The std::vector<std::vector<double > > value to which dir is to be set.
1559 :
1560 :
1561 :
1562 : */
1563 435 : void EphemerisRow::setDir (std::vector<std::vector<double > > dir) {
1564 :
1565 :
1566 435 : if (hasBeenAdded) {
1567 :
1568 : }
1569 :
1570 435 : this->dir = dir;
1571 :
1572 435 : }
1573 :
1574 :
1575 :
1576 :
1577 :
1578 :
1579 : /**
1580 : * Get numPolyDist.
1581 : * @return numPolyDist as int
1582 : */
1583 435 : int EphemerisRow::getNumPolyDist() const {
1584 :
1585 435 : return numPolyDist;
1586 : }
1587 :
1588 : /**
1589 : * Set numPolyDist with the specified int.
1590 : * @param numPolyDist The int value to which numPolyDist is to be set.
1591 :
1592 :
1593 :
1594 : */
1595 435 : void EphemerisRow::setNumPolyDist (int numPolyDist) {
1596 :
1597 :
1598 435 : if (hasBeenAdded) {
1599 :
1600 : }
1601 :
1602 435 : this->numPolyDist = numPolyDist;
1603 :
1604 435 : }
1605 :
1606 :
1607 :
1608 :
1609 :
1610 :
1611 : /**
1612 : * Get distance.
1613 : * @return distance as std::vector<double >
1614 : */
1615 435 : std::vector<double > EphemerisRow::getDistance() const {
1616 :
1617 435 : return distance;
1618 : }
1619 :
1620 : /**
1621 : * Set distance with the specified std::vector<double >.
1622 : * @param distance The std::vector<double > value to which distance is to be set.
1623 :
1624 :
1625 :
1626 : */
1627 435 : void EphemerisRow::setDistance (std::vector<double > distance) {
1628 :
1629 :
1630 435 : if (hasBeenAdded) {
1631 :
1632 : }
1633 :
1634 435 : this->distance = distance;
1635 :
1636 435 : }
1637 :
1638 :
1639 :
1640 :
1641 :
1642 :
1643 : /**
1644 : * Get timeOrigin.
1645 : * @return timeOrigin as ArrayTime
1646 : */
1647 3 : ArrayTime EphemerisRow::getTimeOrigin() const {
1648 :
1649 3 : return timeOrigin;
1650 : }
1651 :
1652 : /**
1653 : * Set timeOrigin with the specified ArrayTime.
1654 : * @param timeOrigin The ArrayTime value to which timeOrigin is to be set.
1655 :
1656 :
1657 :
1658 : */
1659 435 : void EphemerisRow::setTimeOrigin (ArrayTime timeOrigin) {
1660 :
1661 :
1662 435 : if (hasBeenAdded) {
1663 :
1664 : }
1665 :
1666 435 : this->timeOrigin = timeOrigin;
1667 :
1668 435 : }
1669 :
1670 :
1671 :
1672 :
1673 :
1674 :
1675 : /**
1676 : * Get origin.
1677 : * @return origin as std::string
1678 : */
1679 15 : std::string EphemerisRow::getOrigin() const {
1680 :
1681 15 : return origin;
1682 : }
1683 :
1684 : /**
1685 : * Set origin with the specified std::string.
1686 : * @param origin The std::string value to which origin is to be set.
1687 :
1688 :
1689 :
1690 : */
1691 435 : void EphemerisRow::setOrigin (std::string origin) {
1692 :
1693 :
1694 435 : if (hasBeenAdded) {
1695 :
1696 : }
1697 :
1698 435 : this->origin = origin;
1699 :
1700 435 : }
1701 :
1702 :
1703 :
1704 :
1705 : /**
1706 : * The attribute numPolyRadVel is optional. Return true if this attribute exists.
1707 : * @return true if and only if the numPolyRadVel attribute exists.
1708 : */
1709 432 : bool EphemerisRow::isNumPolyRadVelExists() const {
1710 432 : return numPolyRadVelExists;
1711 : }
1712 :
1713 :
1714 :
1715 : /**
1716 : * Get numPolyRadVel, which is optional.
1717 : * @return numPolyRadVel as int
1718 : * @throw IllegalAccessException If numPolyRadVel does not exist.
1719 : */
1720 432 : int EphemerisRow::getNumPolyRadVel() const {
1721 432 : if (!numPolyRadVelExists) {
1722 0 : throw IllegalAccessException("numPolyRadVel", "Ephemeris");
1723 : }
1724 :
1725 432 : return numPolyRadVel;
1726 : }
1727 :
1728 : /**
1729 : * Set numPolyRadVel with the specified int.
1730 : * @param numPolyRadVel The int value to which numPolyRadVel is to be set.
1731 :
1732 :
1733 : */
1734 432 : void EphemerisRow::setNumPolyRadVel (int numPolyRadVel) {
1735 :
1736 432 : this->numPolyRadVel = numPolyRadVel;
1737 :
1738 432 : numPolyRadVelExists = true;
1739 :
1740 432 : }
1741 :
1742 :
1743 : /**
1744 : * Mark numPolyRadVel, which is an optional field, as non-existent.
1745 : */
1746 0 : void EphemerisRow::clearNumPolyRadVel () {
1747 0 : numPolyRadVelExists = false;
1748 0 : }
1749 :
1750 :
1751 :
1752 : /**
1753 : * The attribute radVel is optional. Return true if this attribute exists.
1754 : * @return true if and only if the radVel attribute exists.
1755 : */
1756 438 : bool EphemerisRow::isRadVelExists() const {
1757 438 : return radVelExists;
1758 : }
1759 :
1760 :
1761 :
1762 : /**
1763 : * Get radVel, which is optional.
1764 : * @return radVel as std::vector<double >
1765 : * @throw IllegalAccessException If radVel does not exist.
1766 : */
1767 432 : std::vector<double > EphemerisRow::getRadVel() const {
1768 432 : if (!radVelExists) {
1769 0 : throw IllegalAccessException("radVel", "Ephemeris");
1770 : }
1771 :
1772 432 : return radVel;
1773 : }
1774 :
1775 : /**
1776 : * Set radVel with the specified std::vector<double >.
1777 : * @param radVel The std::vector<double > value to which radVel is to be set.
1778 :
1779 :
1780 : */
1781 432 : void EphemerisRow::setRadVel (std::vector<double > radVel) {
1782 :
1783 432 : this->radVel = radVel;
1784 :
1785 432 : radVelExists = true;
1786 :
1787 432 : }
1788 :
1789 :
1790 : /**
1791 : * Mark radVel, which is an optional field, as non-existent.
1792 : */
1793 0 : void EphemerisRow::clearRadVel () {
1794 0 : radVelExists = false;
1795 0 : }
1796 :
1797 :
1798 :
1799 : ///////////////////////////////////////////////
1800 : // Extrinsic Table Attributes getters/setters//
1801 : ///////////////////////////////////////////////
1802 :
1803 :
1804 : //////////////////////////////////////
1805 : // Links Attributes getters/setters //
1806 : //////////////////////////////////////
1807 :
1808 :
1809 : /**
1810 : * Create a EphemerisRow.
1811 : * <p>
1812 : * This constructor is private because only the
1813 : * table can create rows. All rows know the table
1814 : * to which they belong.
1815 : * @param table The table to which this row belongs.
1816 : */
1817 435 : EphemerisRow::EphemerisRow (EphemerisTable &t) : table(t) {
1818 435 : hasBeenAdded = false;
1819 :
1820 :
1821 :
1822 :
1823 :
1824 :
1825 :
1826 :
1827 :
1828 :
1829 :
1830 :
1831 :
1832 :
1833 :
1834 :
1835 :
1836 :
1837 :
1838 :
1839 :
1840 :
1841 :
1842 435 : numPolyRadVelExists = false;
1843 :
1844 :
1845 :
1846 435 : radVelExists = false;
1847 :
1848 :
1849 :
1850 :
1851 :
1852 :
1853 :
1854 :
1855 :
1856 :
1857 :
1858 :
1859 :
1860 :
1861 :
1862 :
1863 :
1864 :
1865 :
1866 :
1867 :
1868 :
1869 :
1870 :
1871 :
1872 :
1873 :
1874 :
1875 :
1876 :
1877 :
1878 :
1879 435 : fromBinMethods["timeInterval"] = &EphemerisRow::timeIntervalFromBin;
1880 435 : fromBinMethods["ephemerisId"] = &EphemerisRow::ephemerisIdFromBin;
1881 435 : fromBinMethods["observerLocation"] = &EphemerisRow::observerLocationFromBin;
1882 435 : fromBinMethods["equinoxEquator"] = &EphemerisRow::equinoxEquatorFromBin;
1883 435 : fromBinMethods["numPolyDir"] = &EphemerisRow::numPolyDirFromBin;
1884 435 : fromBinMethods["dir"] = &EphemerisRow::dirFromBin;
1885 435 : fromBinMethods["numPolyDist"] = &EphemerisRow::numPolyDistFromBin;
1886 435 : fromBinMethods["distance"] = &EphemerisRow::distanceFromBin;
1887 435 : fromBinMethods["timeOrigin"] = &EphemerisRow::timeOriginFromBin;
1888 435 : fromBinMethods["origin"] = &EphemerisRow::originFromBin;
1889 :
1890 :
1891 435 : fromBinMethods["numPolyRadVel"] = &EphemerisRow::numPolyRadVelFromBin;
1892 435 : fromBinMethods["radVel"] = &EphemerisRow::radVelFromBin;
1893 :
1894 :
1895 :
1896 :
1897 :
1898 435 : fromTextMethods["timeInterval"] = &EphemerisRow::timeIntervalFromText;
1899 :
1900 :
1901 :
1902 435 : fromTextMethods["ephemerisId"] = &EphemerisRow::ephemerisIdFromText;
1903 :
1904 :
1905 :
1906 435 : fromTextMethods["observerLocation"] = &EphemerisRow::observerLocationFromText;
1907 :
1908 :
1909 :
1910 435 : fromTextMethods["equinoxEquator"] = &EphemerisRow::equinoxEquatorFromText;
1911 :
1912 :
1913 :
1914 435 : fromTextMethods["numPolyDir"] = &EphemerisRow::numPolyDirFromText;
1915 :
1916 :
1917 :
1918 435 : fromTextMethods["dir"] = &EphemerisRow::dirFromText;
1919 :
1920 :
1921 :
1922 435 : fromTextMethods["numPolyDist"] = &EphemerisRow::numPolyDistFromText;
1923 :
1924 :
1925 :
1926 435 : fromTextMethods["distance"] = &EphemerisRow::distanceFromText;
1927 :
1928 :
1929 :
1930 435 : fromTextMethods["timeOrigin"] = &EphemerisRow::timeOriginFromText;
1931 :
1932 :
1933 :
1934 435 : fromTextMethods["origin"] = &EphemerisRow::originFromText;
1935 :
1936 :
1937 :
1938 :
1939 :
1940 435 : fromTextMethods["numPolyRadVel"] = &EphemerisRow::numPolyRadVelFromText;
1941 :
1942 :
1943 :
1944 435 : fromTextMethods["radVel"] = &EphemerisRow::radVelFromText;
1945 :
1946 :
1947 435 : }
1948 :
1949 0 : EphemerisRow::EphemerisRow (EphemerisTable &t, EphemerisRow *row) : table(t) {
1950 0 : hasBeenAdded = false;
1951 :
1952 0 : if (row == 0) {
1953 :
1954 :
1955 :
1956 :
1957 :
1958 :
1959 :
1960 :
1961 :
1962 :
1963 :
1964 :
1965 :
1966 :
1967 :
1968 :
1969 :
1970 :
1971 :
1972 :
1973 :
1974 :
1975 :
1976 0 : numPolyRadVelExists = false;
1977 :
1978 :
1979 :
1980 0 : radVelExists = false;
1981 :
1982 :
1983 :
1984 : }
1985 : else {
1986 :
1987 :
1988 0 : timeInterval = row->timeInterval;
1989 :
1990 0 : ephemerisId = row->ephemerisId;
1991 :
1992 :
1993 :
1994 :
1995 0 : observerLocation = row->observerLocation;
1996 :
1997 0 : equinoxEquator = row->equinoxEquator;
1998 :
1999 0 : numPolyDir = row->numPolyDir;
2000 :
2001 0 : dir = row->dir;
2002 :
2003 0 : numPolyDist = row->numPolyDist;
2004 :
2005 0 : distance = row->distance;
2006 :
2007 0 : timeOrigin = row->timeOrigin;
2008 :
2009 0 : origin = row->origin;
2010 :
2011 :
2012 :
2013 :
2014 0 : if (row->numPolyRadVelExists) {
2015 0 : numPolyRadVel = row->numPolyRadVel;
2016 0 : numPolyRadVelExists = true;
2017 : }
2018 : else
2019 0 : numPolyRadVelExists = false;
2020 :
2021 0 : if (row->radVelExists) {
2022 0 : radVel = row->radVel;
2023 0 : radVelExists = true;
2024 : }
2025 : else
2026 0 : radVelExists = false;
2027 :
2028 : }
2029 :
2030 0 : fromBinMethods["timeInterval"] = &EphemerisRow::timeIntervalFromBin;
2031 0 : fromBinMethods["ephemerisId"] = &EphemerisRow::ephemerisIdFromBin;
2032 0 : fromBinMethods["observerLocation"] = &EphemerisRow::observerLocationFromBin;
2033 0 : fromBinMethods["equinoxEquator"] = &EphemerisRow::equinoxEquatorFromBin;
2034 0 : fromBinMethods["numPolyDir"] = &EphemerisRow::numPolyDirFromBin;
2035 0 : fromBinMethods["dir"] = &EphemerisRow::dirFromBin;
2036 0 : fromBinMethods["numPolyDist"] = &EphemerisRow::numPolyDistFromBin;
2037 0 : fromBinMethods["distance"] = &EphemerisRow::distanceFromBin;
2038 0 : fromBinMethods["timeOrigin"] = &EphemerisRow::timeOriginFromBin;
2039 0 : fromBinMethods["origin"] = &EphemerisRow::originFromBin;
2040 :
2041 :
2042 0 : fromBinMethods["numPolyRadVel"] = &EphemerisRow::numPolyRadVelFromBin;
2043 0 : fromBinMethods["radVel"] = &EphemerisRow::radVelFromBin;
2044 :
2045 0 : }
2046 :
2047 :
2048 0 : bool EphemerisRow::compareNoAutoInc(ArrayTimeInterval timeInterval, int ephemerisId, std::vector<double > observerLocation, double equinoxEquator, int numPolyDir, std::vector<std::vector<double > > dir, int numPolyDist, std::vector<double > distance, ArrayTime timeOrigin, std::string origin) {
2049 : bool result;
2050 0 : result = true;
2051 :
2052 :
2053 :
2054 0 : result = result && (this->timeInterval.overlaps(timeInterval));
2055 :
2056 0 : if (!result) return false;
2057 :
2058 :
2059 :
2060 :
2061 0 : result = result && (this->ephemerisId == ephemerisId);
2062 :
2063 0 : if (!result) return false;
2064 :
2065 :
2066 :
2067 :
2068 0 : result = result && (this->observerLocation == observerLocation);
2069 :
2070 0 : if (!result) return false;
2071 :
2072 :
2073 :
2074 :
2075 0 : result = result && (this->equinoxEquator == equinoxEquator);
2076 :
2077 0 : if (!result) return false;
2078 :
2079 :
2080 :
2081 :
2082 0 : result = result && (this->numPolyDir == numPolyDir);
2083 :
2084 0 : if (!result) return false;
2085 :
2086 :
2087 :
2088 :
2089 0 : result = result && (this->dir == dir);
2090 :
2091 0 : if (!result) return false;
2092 :
2093 :
2094 :
2095 :
2096 0 : result = result && (this->numPolyDist == numPolyDist);
2097 :
2098 0 : if (!result) return false;
2099 :
2100 :
2101 :
2102 :
2103 0 : result = result && (this->distance == distance);
2104 :
2105 0 : if (!result) return false;
2106 :
2107 :
2108 :
2109 :
2110 0 : result = result && (this->timeOrigin == timeOrigin);
2111 :
2112 0 : if (!result) return false;
2113 :
2114 :
2115 :
2116 :
2117 0 : result = result && (this->origin == origin);
2118 :
2119 0 : if (!result) return false;
2120 :
2121 :
2122 0 : return result;
2123 : }
2124 :
2125 :
2126 :
2127 0 : bool EphemerisRow::compareRequiredValue(std::vector<double > observerLocation, double equinoxEquator, int numPolyDir, std::vector<std::vector<double > > dir, int numPolyDist, std::vector<double > distance, ArrayTime timeOrigin, std::string origin) {
2128 : bool result;
2129 0 : result = true;
2130 :
2131 :
2132 0 : if (!(this->observerLocation == observerLocation)) return false;
2133 :
2134 :
2135 :
2136 0 : if (!(this->equinoxEquator == equinoxEquator)) return false;
2137 :
2138 :
2139 :
2140 0 : if (!(this->numPolyDir == numPolyDir)) return false;
2141 :
2142 :
2143 :
2144 0 : if (!(this->dir == dir)) return false;
2145 :
2146 :
2147 :
2148 0 : if (!(this->numPolyDist == numPolyDist)) return false;
2149 :
2150 :
2151 :
2152 0 : if (!(this->distance == distance)) return false;
2153 :
2154 :
2155 :
2156 0 : if (!(this->timeOrigin == timeOrigin)) return false;
2157 :
2158 :
2159 :
2160 0 : if (!(this->origin == origin)) return false;
2161 :
2162 :
2163 0 : return result;
2164 : }
2165 :
2166 :
2167 : /**
2168 : * Return true if all required attributes of the value part are equal to their homologues
2169 : * in x and false otherwise.
2170 : *
2171 :
2172 : * @param x a pointer on the EphemerisRow whose required attributes of the value part
2173 :
2174 : * will be compared with those of this.
2175 : * @return a boolean.
2176 : */
2177 0 : bool EphemerisRow::equalByRequiredValue(EphemerisRow* x ) {
2178 :
2179 :
2180 0 : if (this->observerLocation != x->observerLocation) return false;
2181 :
2182 0 : if (this->equinoxEquator != x->equinoxEquator) return false;
2183 :
2184 0 : if (this->numPolyDir != x->numPolyDir) return false;
2185 :
2186 0 : if (this->dir != x->dir) return false;
2187 :
2188 0 : if (this->numPolyDist != x->numPolyDist) return false;
2189 :
2190 0 : if (this->distance != x->distance) return false;
2191 :
2192 0 : if (this->timeOrigin != x->timeOrigin) return false;
2193 :
2194 0 : if (this->origin != x->origin) return false;
2195 :
2196 :
2197 0 : return true;
2198 : }
2199 :
2200 : /*
2201 : map<string, EphemerisAttributeFromBin> EphemerisRow::initFromBinMethods() {
2202 : map<string, EphemerisAttributeFromBin> result;
2203 :
2204 : result["timeInterval"] = &EphemerisRow::timeIntervalFromBin;
2205 : result["ephemerisId"] = &EphemerisRow::ephemerisIdFromBin;
2206 : result["observerLocation"] = &EphemerisRow::observerLocationFromBin;
2207 : result["equinoxEquator"] = &EphemerisRow::equinoxEquatorFromBin;
2208 : result["numPolyDir"] = &EphemerisRow::numPolyDirFromBin;
2209 : result["dir"] = &EphemerisRow::dirFromBin;
2210 : result["numPolyDist"] = &EphemerisRow::numPolyDistFromBin;
2211 : result["distance"] = &EphemerisRow::distanceFromBin;
2212 : result["timeOrigin"] = &EphemerisRow::timeOriginFromBin;
2213 : result["origin"] = &EphemerisRow::originFromBin;
2214 :
2215 :
2216 : result["numPolyRadVel"] = &EphemerisRow::numPolyRadVelFromBin;
2217 : result["radVel"] = &EphemerisRow::radVelFromBin;
2218 :
2219 :
2220 : return result;
2221 : }
2222 : */
2223 : } // End namespace asdm
2224 :
|