00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef LOSR_OpticalSystem_hpp
00024 #define LOSR_OpticalSystem_hpp
00025
00026 #include <iostream>
00027 #include <vector>
00028
00029 #include "losr/Surface.hpp"
00030
00031 namespace LOSR {
00032
00042 class OpticalSystem : public std::vector<Surface> {
00043
00044 public:
00045 OpticalSystem(unsigned int inSize=0);
00046 ~OpticalSystem() { }
00047
00048 void read(std::istream& ioIs=std::cin);
00049 void write(std::ostream& ioOs=std::cout) const;
00050 bool validate();
00051
00052 };
00053
00054 }
00055
00056
00063 inline std::istream& operator>>(
00064 std::istream& ioIs,
00065 LOSR::OpticalSystem& outOpSystem
00066 )
00067 {
00068 outOpSystem.read(ioIs);
00069 return ioIs;
00070 }
00071
00078 inline std::ostream& operator<<(
00079 std::ostream& ioOs,
00080 const LOSR::OpticalSystem& inOpSystem
00081 )
00082 {
00083 inOpSystem.write(ioOs);
00084 return ioOs;
00085 }
00086
00087 #endif // LOSR_OpticalSystem_hpp