From f9a1ab09b14b0cee9115aa744ecc36b9cfaa21f3 Mon Sep 17 00:00:00 2001 From: noah Date: Wed, 9 Mar 2022 16:10:28 -0600 Subject: [PATCH] Plotting original lines --- .../HLlib.dir/compiler_depend.internal | 15 + .../CMakeFiles/HLlib.dir/compiler_depend.make | 939 ++++---- .../HLlib.dir/src/HiddenLines.cpp.o | Bin 53728 -> 131904 bytes .../HLlib.dir/src/HiddenLines.cpp.o.d | 547 +---- build/libHLlib.a | Bin 57420 -> 137016 bytes build/main | Bin 55648 -> 101504 bytes src/HiddenLines.cpp | 30 +- src/gnuplot_i.hpp | 2114 +++++++++++++++++ 8 files changed, 2654 insertions(+), 991 deletions(-) create mode 100644 src/gnuplot_i.hpp diff --git a/build/CMakeFiles/HLlib.dir/compiler_depend.internal b/build/CMakeFiles/HLlib.dir/compiler_depend.internal index 72acd14..74b7490 100644 --- a/build/CMakeFiles/HLlib.dir/compiler_depend.internal +++ b/build/CMakeFiles/HLlib.dir/compiler_depend.internal @@ -248,6 +248,21 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o /usr/include/c++/11.2.0/bits/stl_bvector.h /usr/include/c++/11.2.0/bits/vector.tcc /usr/include/c++/11.2.0/pstl/execution_defs.h + /home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/gnuplot_i.hpp + /usr/include/c++/11.2.0/sstream + /usr/include/c++/11.2.0/bits/sstream.tcc + /usr/include/c++/11.2.0/list + /usr/include/c++/11.2.0/bits/stl_list.h + /usr/include/c++/11.2.0/bits/allocated_ptr.h + /usr/include/c++/11.2.0/bits/list.tcc + /usr/include/unistd.h + /usr/include/bits/posix_opt.h + /usr/include/bits/environments.h + /usr/include/bits/confname.h + /usr/include/bits/getopt_posix.h + /usr/include/bits/getopt_core.h + /usr/include/bits/unistd_ext.h + /usr/include/linux/close_range.h /home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/HiddenLines.h /usr/include/c++/11.2.0/map /usr/include/c++/11.2.0/bits/stl_map.h diff --git a/build/CMakeFiles/HLlib.dir/compiler_depend.make b/build/CMakeFiles/HLlib.dir/compiler_depend.make index 314ddc3..26ee71a 100644 --- a/build/CMakeFiles/HLlib.dir/compiler_depend.make +++ b/build/CMakeFiles/HLlib.dir/compiler_depend.make @@ -247,6 +247,21 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \ /usr/include/c++/11.2.0/bits/stl_bvector.h \ /usr/include/c++/11.2.0/bits/vector.tcc \ /usr/include/c++/11.2.0/pstl/execution_defs.h \ + ../src/gnuplot_i.hpp \ + /usr/include/c++/11.2.0/sstream \ + /usr/include/c++/11.2.0/bits/sstream.tcc \ + /usr/include/c++/11.2.0/list \ + /usr/include/c++/11.2.0/bits/stl_list.h \ + /usr/include/c++/11.2.0/bits/allocated_ptr.h \ + /usr/include/c++/11.2.0/bits/list.tcc \ + /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h \ + /usr/include/bits/confname.h \ + /usr/include/bits/getopt_posix.h \ + /usr/include/bits/getopt_core.h \ + /usr/include/bits/unistd_ext.h \ + /usr/include/linux/close_range.h \ ../src/HiddenLines.h \ /usr/include/c++/11.2.0/map \ /usr/include/c++/11.2.0/bits/stl_map.h \ @@ -254,504 +269,534 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: ../src/HiddenLines.cpp \ ../src/Line.h -/usr/include/c++/11.2.0/map: - -/usr/include/c++/11.2.0/bits/vector.tcc: - -/usr/include/c++/11.2.0/bits/stl_vector.h: - -/usr/include/c++/11.2.0/bits/stl_uninitialized.h: - -/usr/include/c++/11.2.0/vector: - -/usr/include/c++/11.2.0/bits/hashtable_policy.h: - -/usr/include/c++/11.2.0/bits/invoke.h: - -/usr/include/c++/11.2.0/bits/uses_allocator.h: - -/usr/include/c++/11.2.0/tuple: - -/usr/include/c++/11.2.0/bits/uniform_int_dist.h: - -/usr/include/c++/11.2.0/bits/stl_tempbuf.h: - -/usr/include/c++/11.2.0/bits/stl_heap.h: - -/usr/include/c++/11.2.0/tr1/poly_laguerre.tcc: - -/usr/include/c++/11.2.0/tr1/legendre_function.tcc: - -/usr/include/c++/11.2.0/tr1/exp_integral.tcc: - -/usr/include/c++/11.2.0/tr1/ell_integral.tcc: - -/usr/include/c++/11.2.0/tr1/beta_function.tcc: - -/usr/include/c++/11.2.0/tr1/bessel_function.tcc: - -/usr/include/c++/11.2.0/tr1/special_function_util.h: - -/usr/include/c++/11.2.0/tr1/gamma.tcc: - -/usr/include/c++/11.2.0/bits/specfun.h: - -/usr/include/bits/iscanonical.h: - -/usr/include/bits/mathcalls-helper-functions.h: - -/usr/include/c++/11.2.0/tr1/poly_hermite.tcc: - -/usr/include/bits/fp-fast.h: - -/usr/include/c++/11.2.0/array: - -/usr/include/bits/libm-simd-decl-stubs.h: - -/usr/include/bits/math-vector.h: - -/usr/include/c++/11.2.0/cmath: - -/usr/include/c++/11.2.0/bits/unordered_map.h: - -/usr/include/c++/11.2.0/math.h: - -/usr/include/c++/11.2.0/limits: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++io.h: - -/usr/include/c++/11.2.0/bits/stl_relops.h: - -/usr/include/c++/11.2.0/fstream: - -/usr/include/c++/11.2.0/ext/aligned_buffer.h: - -/usr/include/c++/11.2.0/bits/stl_bvector.h: - -/usr/include/c++/11.2.0/set: - -/usr/include/c++/11.2.0/bits/istream.tcc: - -/usr/include/c++/11.2.0/istream: - -/usr/include/c++/11.2.0/bits/locale_facets.tcc: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/ctype_inline.h: - -/usr/include/c++/11.2.0/bits/streambuf_iterator.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/ctype_base.h: - -/usr/include/c++/11.2.0/tr1/hypergeometric.tcc: - -/usr/include/c++/11.2.0/cwctype: - -/usr/include/c++/11.2.0/bits/basic_ios.h: - -/usr/include/c++/11.2.0/bits/std_function.h: - -/usr/include/c++/11.2.0/streambuf: - -/usr/include/c++/11.2.0/bits/locale_classes.tcc: - -/usr/include/c++/11.2.0/bits/charconv.h: - -/usr/include/bits/types/error_t.h: - -/usr/include/asm-generic/errno-base.h: - -/usr/include/bits/fp-logb.h: - -/usr/include/asm-generic/errno.h: - -/usr/include/linux/errno.h: - -/usr/include/errno.h: - -/usr/include/c++/11.2.0/bits/stl_multimap.h: - -/usr/include/c++/11.2.0/cerrno: - /usr/include/c++/11.2.0/bits/stl_map.h: -/usr/include/c++/11.2.0/bits/codecvt.h: - -/usr/include/bits/stdio.h: - -/usr/include/c++/11.2.0/bits/algorithmfwd.h: - -/usr/include/bits/types/struct_FILE.h: - -/usr/include/bits/types/__fpos64_t.h: - -/usr/include/c++/11.2.0/bits/std_abs.h: - -/usr/include/bits/stdlib-bsearch.h: - -/usr/include/alloca.h: - -/usr/include/bits/types/sigset_t.h: - -/usr/include/bits/select.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/error_constants.h: - -/usr/include/sys/select.h: - -/usr/include/bits/uintn-identity.h: - -/usr/include/endian.h: - -/usr/include/stdlib.h: - -/usr/include/asm/errno.h: - -/usr/include/c++/11.2.0/bits/string_view.tcc: - -/usr/include/c++/11.2.0/bits/functional_hash.h: - -/usr/include/c++/11.2.0/bits/stl_iterator.h: - -/usr/include/c++/11.2.0/bits/stl_pair.h: - -/usr/include/c++/11.2.0/bits/cpp_type_traits.h: - -/usr/include/bits/mathcalls-narrow.h: - -/usr/include/c++/11.2.0/bits/char_traits.h: - -/usr/include/c++/11.2.0/bits/hashtable.h: - -/usr/include/bits/waitstatus.h: - -/usr/include/bits/timesize.h: - -/usr/include/bits/endian.h: - -/usr/include/c++/11.2.0/ext/numeric_traits.h: - -/usr/include/wchar.h: - -../src/HiddenLines.cpp: - -/usr/include/c++/11.2.0/ext/alloc_traits.h: - -/usr/include/math.h: - -/usr/include/c++/11.2.0/bits/streambuf.tcc: - -/usr/include/c++/11.2.0/bits/exception.h: - -/usr/include/wctype.h: - -/usr/include/bits/errno.h: - -/usr/include/bits/timex.h: - -/usr/include/bits/types/locale_t.h: - -/usr/include/c++/11.2.0/bits/concept_check.h: - -/usr/include/bits/types/wint_t.h: - -/usr/include/c++/11.2.0/tr1/modified_bessel_func.tcc: - -/usr/include/c++/11.2.0/iosfwd: - -/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include/stddef.h: - -/usr/include/c++/11.2.0/bits/exception_ptr.h: - -/usr/include/locale.h: - -/usr/include/c++/11.2.0/tr1/riemann_zeta.tcc: - -/usr/include/c++/11.2.0/bits/locale_facets.h: - -/usr/include/bits/types/__locale_t.h: - -/usr/include/c++/11.2.0/bits/hash_bytes.h: - -/usr/include/sched.h: - -/usr/include/c++/11.2.0/initializer_list: - -/usr/include/bits/long-double.h: - -/usr/include/c++/11.2.0/iostream: - -/usr/include/features-time64.h: - -/usr/include/c++/11.2.0/bits/nested_exception.h: - -/usr/include/bits/wordsize.h: - -/usr/include/c++/11.2.0/bits/stl_algobase.h: - -/usr/include/c++/11.2.0/new: - -/usr/include/gnu/stubs-64.h: - -/usr/include/c++/11.2.0/bits/stringfwd.h: - -/usr/include/c++/11.2.0/bits/stl_construct.h: - -/usr/include/c++/11.2.0/bits/functexcept.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++config.h: - -/usr/include/bits/stdint-uintn.h: - -/usr/include/c++/11.2.0/bits/cxxabi_init_exception.h: - -/usr/include/bits/sched.h: - -/usr/include/c++/11.2.0/bits/fstream.tcc: - -/usr/include/sys/cdefs.h: - -/usr/include/stdio.h: - -/usr/include/c++/11.2.0/bits/range_access.h: - -/usr/include/stdc-predef.h: - -/usr/include/c++/11.2.0/bits/stl_tree.h: - -/usr/include/c++/11.2.0/ext/type_traits.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/os_defines.h: - -/usr/include/bits/stdlib-float.h: - -/usr/include/bits/time64.h: - -/usr/include/c++/11.2.0/exception: - -/usr/include/c++/11.2.0/pstl/glue_algorithm_defs.h: - -/usr/include/bits/pthread_stack_min-dynamic.h: - -/usr/include/c++/11.2.0/bits/stl_set.h: - -/usr/include/c++/11.2.0/bits/move.h: - -/usr/include/c++/11.2.0/cctype: - -/usr/include/c++/11.2.0/bits/erase_if.h: - -/usr/include/bits/libc-header-start.h: - -/usr/include/c++/11.2.0/functional: - -/usr/include/c++/11.2.0/bits/stl_multiset.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h: - -/usr/include/bits/byteswap.h: - -/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include/stdarg.h: - -/usr/include/c++/11.2.0/bits/ios_base.h: - -/usr/include/c++/11.2.0/bits/refwrap.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/gthr.h: - -/usr/include/c++/11.2.0/debug/assertions.h: - -/usr/include/bits/types/struct_sched_param.h: - -/usr/include/bits/types/mbstate_t.h: - -/usr/include/c++/11.2.0/pstl/pstl_config.h: - -/usr/include/c++/11.2.0/bits/node_handle.h: - -/usr/include/c++/11.2.0/bits/memoryfwd.h: - -/usr/include/c++/11.2.0/unordered_map: - -/usr/include/bits/flt-eval-method.h: - -/usr/include/c++/11.2.0/bits/basic_ios.tcc: - -/usr/include/bits/types/FILE.h: - -/usr/include/bits/types/__FILE.h: - -/usr/include/bits/wchar.h: - -/usr/include/c++/11.2.0/algorithm: - -/usr/include/c++/11.2.0/cwchar: - -/usr/include/bits/types/struct_tm.h: - -/usr/include/c++/11.2.0/bits/stl_iterator_base_funcs.h: +/usr/include/c++/11.2.0/map: ../src/HiddenLines.h: -/usr/include/c++/11.2.0/bits/postypes.h: +/usr/include/bits/getopt_core.h: -/usr/include/bits/floatn.h: +/usr/include/bits/pthreadtypes-arch.h: -/usr/include/c++/11.2.0/bits/ptr_traits.h: +/usr/include/c++/11.2.0/ext/new_allocator.h: -/usr/include/bits/types/time_t.h: +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++allocator.h: -/usr/include/c++/11.2.0/utility: +/usr/include/bits/unistd_ext.h: -/usr/include/c++/11.2.0/debug/debug.h: +/usr/include/c++/11.2.0/bits/basic_string.tcc: -/usr/include/c++/11.2.0/bits/predefined_ops.h: +/usr/include/c++/11.2.0/bits/stl_multimap.h: -/usr/include/c++/11.2.0/pstl/execution_defs.h: +/usr/include/c++/11.2.0/bits/allocator.h: -/usr/include/c++/11.2.0/type_traits: +/usr/include/c++/11.2.0/string: -/usr/include/bits/stdint-intn.h: +/usr/include/c++/11.2.0/bits/exception_defines.h: -/usr/include/bits/types/cookie_io_functions_t.h: +/usr/include/sys/single_threaded.h: -/usr/include/c++/11.2.0/cstdint: +/usr/include/c++/11.2.0/typeinfo: -/usr/include/c++/11.2.0/ext/string_conversions.h: +/usr/include/bits/setjmp.h: -/usr/include/c++/11.2.0/ios: +/usr/include/c++/11.2.0/clocale: -/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include/stdint.h: +/usr/include/c++/11.2.0/bits/stl_algo.h: -/usr/include/stdint.h: +/usr/include/bits/types/struct_itimerspec.h: -/usr/include/c++/11.2.0/bits/cxxabi_forced.h: +/usr/include/bits/types/timer_t.h: -/usr/include/c++/11.2.0/bits/stl_function.h: - -/usr/include/bits/types.h: - -/usr/include/bits/typesizes.h: - -/usr/include/bits/cpu-set.h: - -/usr/include/c++/11.2.0/bits/ostream.tcc: - -/usr/include/bits/struct_mutex.h: - -/usr/include/c++/11.2.0/bits/localefwd.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/atomic_word.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++locale.h: - -/usr/include/bits/locale.h: - -/usr/include/bits/floatn-common.h: - -/usr/include/c++/11.2.0/ostream: - -/usr/include/c++/11.2.0/bits/alloc_traits.h: - -/usr/include/bits/waitflags.h: - -/usr/include/ctype.h: - -/usr/include/features.h: - -/usr/include/bits/endianness.h: - -/usr/include/c++/11.2.0/ext/atomicity.h: - -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/gthr-default.h: - -/usr/include/c++/11.2.0/stdexcept: - -/usr/include/pthread.h: - -/usr/include/bits/types/struct_timespec.h: - -/usr/include/time.h: - -/usr/include/bits/stdio_lim.h: - -/usr/include/bits/types/__mbstate_t.h: - -/usr/include/bits/time.h: - -/usr/include/bits/types/struct_timeval.h: - -/usr/include/bits/mathcalls.h: - -/usr/include/bits/types/__fpos_t.h: - -/usr/include/c++/11.2.0/bits/stl_iterator_base_types.h: - -/usr/include/bits/types/clock_t.h: - -/usr/include/bits/types/clockid_t.h: +/usr/include/c++/11.2.0/system_error: /usr/include/bits/atomic_wide_counter.h: /usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/basic_file.h: -/usr/include/c++/11.2.0/system_error: +/usr/include/bits/posix_opt.h: -/usr/include/c++/11.2.0/string_view: +/usr/include/bits/types/clock_t.h: -/usr/include/bits/types/timer_t.h: +/usr/include/c++/11.2.0/bits/stl_iterator_base_types.h: -/usr/include/bits/struct_rwlock.h: +/usr/include/bits/types/__fpos_t.h: -/usr/include/bits/types/struct_itimerspec.h: +/usr/include/bits/mathcalls.h: -/usr/include/bits/pthreadtypes.h: +/usr/include/bits/types/struct_timeval.h: -/usr/include/c++/11.2.0/bits/stl_algo.h: +/usr/include/bits/time.h: -/usr/include/c++/11.2.0/clocale: +/usr/include/bits/types/__mbstate_t.h: -/usr/include/bits/thread-shared-types.h: +/usr/include/bits/stdio_lim.h: -/usr/include/bits/setjmp.h: +/usr/include/time.h: -../src/Line.h: +/usr/include/bits/types/struct_timespec.h: -/usr/include/c++/11.2.0/typeinfo: - -/usr/include/bits/types/struct___jmp_buf_tag.h: - -/usr/include/bits/types/__sigset_t.h: - -/usr/include/sys/single_threaded.h: - -/usr/include/c++/11.2.0/cstdlib: - -/usr/include/c++/11.2.0/bits/exception_defines.h: - -/usr/include/c++/11.2.0/string: - -/usr/include/c++/11.2.0/bits/allocator.h: - -/usr/include/c++/11.2.0/bits/basic_string.tcc: +/usr/include/pthread.h: /usr/include/c++/11.2.0/bits/basic_string.h: +/usr/include/c++/11.2.0/stdexcept: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/gthr-default.h: + +/usr/include/bits/endianness.h: + +/usr/include/ctype.h: + +/usr/include/bits/waitflags.h: + +/usr/include/c++/11.2.0/bits/alloc_traits.h: + +/usr/include/bits/floatn-common.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++locale.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/atomic_word.h: + +/usr/include/c++/11.2.0/bits/localefwd.h: + +/usr/include/bits/struct_mutex.h: + +/usr/include/c++/11.2.0/bits/ostream.tcc: + +/usr/include/bits/cpu-set.h: + +/usr/include/bits/typesizes.h: + +/usr/include/bits/types.h: + +/usr/include/c++/11.2.0/bits/stl_function.h: + /usr/include/bits/wctype-wchar.h: -/usr/include/c++/11.2.0/cstdio: +/usr/include/c++/11.2.0/bits/cxxabi_forced.h: -/usr/include/sys/types.h: +/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include/stdint.h: -/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++allocator.h: +/usr/include/c++/11.2.0/ext/string_conversions.h: -/usr/include/c++/11.2.0/ext/new_allocator.h: +/usr/include/c++/11.2.0/cstdint: + +/usr/include/bits/types/clockid_t.h: + +/usr/include/bits/stdint-intn.h: + +/usr/include/c++/11.2.0/type_traits: /usr/include/c++/11.2.0/bits/ostream_insert.h: +/usr/include/c++/11.2.0/pstl/execution_defs.h: + +/usr/include/c++/11.2.0/bits/predefined_ops.h: + +/usr/include/c++/11.2.0/utility: + +/usr/include/bits/types/time_t.h: + +/usr/include/c++/11.2.0/bits/ptr_traits.h: + +/usr/include/bits/floatn.h: + +/usr/include/c++/11.2.0/bits/postypes.h: + +/usr/include/c++/11.2.0/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/11.2.0/algorithm: + +/usr/include/bits/types/FILE.h: + +/usr/include/c++/11.2.0/bits/basic_ios.tcc: + +/usr/include/bits/flt-eval-method.h: + +/usr/include/c++/11.2.0/unordered_map: + +/usr/include/c++/11.2.0/bits/memoryfwd.h: + +/usr/include/c++/11.2.0/debug/debug.h: + +/usr/include/c++/11.2.0/bits/node_handle.h: + +/usr/include/c++/11.2.0/pstl/pstl_config.h: + +/usr/include/bits/types/mbstate_t.h: + +/usr/include/bits/types/struct_sched_param.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/gthr.h: + +/usr/include/c++/11.2.0/bits/refwrap.h: + +/usr/include/bits/types/cookie_io_functions_t.h: + +/usr/include/c++/11.2.0/bits/ios_base.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include/stdarg.h: + +/usr/include/bits/byteswap.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cpu_defines.h: + +/usr/include/c++/11.2.0/bits/stl_multiset.h: + +/usr/include/c++/11.2.0/functional: + +/usr/include/bits/libc-header-start.h: + +/usr/include/c++/11.2.0/bits/erase_if.h: + +/usr/include/c++/11.2.0/cctype: + +/usr/include/c++/11.2.0/bits/move.h: + +/usr/include/c++/11.2.0/bits/stl_set.h: + +/usr/include/bits/pthread_stack_min-dynamic.h: + +/usr/include/c++/11.2.0/pstl/glue_algorithm_defs.h: + +/usr/include/c++/11.2.0/exception: + +/usr/include/bits/time64.h: + +/usr/include/bits/stdlib-float.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/os_defines.h: + +/usr/include/c++/11.2.0/bits/stl_tree.h: + +/usr/include/stdc-predef.h: + +/usr/include/c++/11.2.0/list: + +/usr/include/c++/11.2.0/bits/range_access.h: + +/usr/include/sys/cdefs.h: + +/usr/include/c++/11.2.0/bits/fstream.tcc: + +/usr/include/c++/11.2.0/bits/sstream.tcc: + +/usr/include/features.h: + +/usr/include/bits/types/__FILE.h: + +/usr/include/bits/sched.h: + +/usr/include/c++/11.2.0/bits/cxxabi_init_exception.h: + +/usr/include/c++/11.2.0/bits/functexcept.h: + +/usr/include/c++/11.2.0/bits/stl_construct.h: + +/usr/include/c++/11.2.0/bits/stringfwd.h: + +/usr/include/c++/11.2.0/cstdio: + +/usr/include/gnu/stubs-64.h: + +/usr/include/c++/11.2.0/new: + +/usr/include/bits/types/struct_tm.h: + +/usr/include/c++/11.2.0/bits/stl_algobase.h: + +/usr/include/stdio.h: + +/usr/include/bits/wordsize.h: + +/usr/include/c++/11.2.0/ios: + +/usr/include/c++/11.2.0/bits/nested_exception.h: + +/usr/include/c++/11.2.0/backward/binders.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++config.h: + +/usr/include/features-time64.h: + +/usr/include/c++/11.2.0/ext/type_traits.h: + +/usr/include/bits/long-double.h: + +/usr/include/c++/11.2.0/ostream: + +/usr/include/c++/11.2.0/initializer_list: + +/usr/include/bits/types/__locale_t.h: + +/usr/include/c++/11.2.0/bits/locale_facets.h: + +/usr/include/c++/11.2.0/tr1/riemann_zeta.tcc: + +/usr/include/locale.h: + +/usr/include/c++/11.2.0/bits/exception_ptr.h: + +/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include/stddef.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/c++/11.2.0/iosfwd: + +/usr/include/c++/11.2.0/tr1/modified_bessel_func.tcc: + +/usr/include/bits/types/locale_t.h: + +/usr/include/c++/11.2.0/bits/stl_list.h: + +/usr/include/bits/timex.h: + +/usr/include/bits/errno.h: + +/usr/include/c++/11.2.0/bits/exception.h: + +/usr/include/math.h: + +/usr/include/linux/close_range.h: + +../src/HiddenLines.cpp: + +/usr/include/c++/11.2.0/bits/list.tcc: + +/usr/include/wchar.h: + +/usr/include/sys/types.h: + +/usr/include/c++/11.2.0/ext/numeric_traits.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/timesize.h: + +/usr/include/bits/types/struct___jmp_buf_tag.h: + +/usr/include/bits/wchar.h: + +/usr/include/c++/11.2.0/bits/allocated_ptr.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/c++/11.2.0/bits/hashtable.h: + +/usr/include/c++/11.2.0/bits/char_traits.h: + +/usr/include/bits/mathcalls-narrow.h: + +/usr/include/c++/11.2.0/bits/stl_pair.h: + +/usr/include/c++/11.2.0/bits/concept_check.h: + +/usr/include/c++/11.2.0/bits/stl_iterator.h: + +/usr/include/c++/11.2.0/bits/functional_hash.h: + +/usr/include/c++/11.2.0/bits/string_view.tcc: + +/usr/include/bits/stdint-uintn.h: + +/usr/include/asm/errno.h: + +/usr/include/stdlib.h: + +/usr/include/bits/uintn-identity.h: + +/usr/include/sys/select.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/error_constants.h: + +/usr/include/c++/11.2.0/string_view: + +/usr/include/bits/select.h: + +/usr/include/bits/types/sigset_t.h: + +/usr/include/c++/11.2.0/cstdlib: + +/usr/include/alloca.h: + +/usr/include/bits/stdlib-bsearch.h: + +/usr/include/c++/11.2.0/bits/std_abs.h: + +/usr/include/bits/types/__fpos64_t.h: + +/usr/include/c++/11.2.0/bits/algorithmfwd.h: + +/usr/include/bits/stdio.h: + +/usr/include/bits/locale.h: + +/usr/include/c++/11.2.0/bits/codecvt.h: + +/usr/include/c++/11.2.0/cerrno: + +/usr/include/bits/getopt_posix.h: + +/usr/include/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/bits/fp-logb.h: + +/usr/include/c++/11.2.0/sstream: + +/usr/include/c++/11.2.0/cwchar: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/bits/types/error_t.h: + /usr/include/gnu/stubs.h: -/usr/include/bits/pthreadtypes-arch.h: +/usr/include/c++/11.2.0/ext/atomicity.h: + +/usr/include/c++/11.2.0/bits/hash_bytes.h: + +/usr/include/c++/11.2.0/bits/charconv.h: + +/usr/include/c++/11.2.0/bits/locale_classes.tcc: + +/usr/include/bits/confname.h: + +/usr/include/bits/struct_rwlock.h: + +/usr/include/c++/11.2.0/streambuf: + +/usr/include/c++/11.2.0/bits/std_function.h: + +/usr/include/c++/11.2.0/cwctype: + +/usr/include/c++/11.2.0/tr1/hypergeometric.tcc: + +../src/Line.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/ctype_base.h: + +/usr/include/c++/11.2.0/bits/streambuf_iterator.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/ctype_inline.h: + +/usr/include/c++/11.2.0/bits/locale_facets.tcc: + +/usr/include/bits/thread-shared-types.h: + +/usr/include/c++/11.2.0/istream: + +/usr/include/c++/11.2.0/bits/istream.tcc: + +../src/gnuplot_i.hpp: + +/usr/include/c++/11.2.0/iostream: + +/usr/include/c++/11.2.0/ext/alloc_traits.h: + +/usr/include/c++/11.2.0/set: + +/usr/include/c++/11.2.0/bits/stl_bvector.h: + +/usr/include/c++/11.2.0/bits/streambuf.tcc: + +/usr/include/c++/11.2.0/ext/aligned_buffer.h: + +/usr/include/c++/11.2.0/bits/stl_relops.h: /usr/include/c++/11.2.0/bits/locale_classes.h: -/usr/include/c++/11.2.0/backward/binders.h: +/usr/include/c++/11.2.0/limits: + +/usr/include/stdint.h: + +/usr/include/endian.h: + +/usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/c++io.h: + +/usr/include/c++/11.2.0/math.h: + +/usr/include/bits/types/wint_t.h: + +/usr/include/c++/11.2.0/bits/unordered_map.h: + +/usr/include/c++/11.2.0/cmath: + +/usr/include/bits/math-vector.h: + +/usr/include/bits/libm-simd-decl-stubs.h: + +/usr/include/c++/11.2.0/array: + +/usr/include/sched.h: + +/usr/include/wctype.h: + +/usr/include/bits/fp-fast.h: + +/usr/include/c++/11.2.0/tr1/poly_hermite.tcc: + +/usr/include/bits/mathcalls-helper-functions.h: + +/usr/include/c++/11.2.0/bits/specfun.h: + +/usr/include/c++/11.2.0/tr1/gamma.tcc: + +/usr/include/c++/11.2.0/tr1/special_function_util.h: + +/usr/include/c++/11.2.0/fstream: + +/usr/include/unistd.h: + +/usr/include/c++/11.2.0/tr1/bessel_function.tcc: + +/usr/include/c++/11.2.0/tr1/beta_function.tcc: + +/usr/include/c++/11.2.0/tr1/ell_integral.tcc: + +/usr/include/c++/11.2.0/tr1/exp_integral.tcc: + +/usr/include/c++/11.2.0/tr1/legendre_function.tcc: + +/usr/include/c++/11.2.0/tr1/poly_laguerre.tcc: + +/usr/include/c++/11.2.0/bits/stl_heap.h: + +/usr/include/bits/iscanonical.h: + +/usr/include/c++/11.2.0/bits/uniform_int_dist.h: + +/usr/include/c++/11.2.0/tuple: + +/usr/include/bits/types/__sigset_t.h: + +/usr/include/c++/11.2.0/bits/uses_allocator.h: + +/usr/include/c++/11.2.0/bits/cpp_type_traits.h: + +/usr/include/c++/11.2.0/bits/stl_tempbuf.h: + +/usr/include/c++/11.2.0/bits/invoke.h: + +/usr/include/c++/11.2.0/bits/basic_ios.h: + +/usr/include/c++/11.2.0/bits/hashtable_policy.h: + +/usr/include/c++/11.2.0/vector: + +/usr/include/c++/11.2.0/bits/stl_uninitialized.h: + +/usr/include/c++/11.2.0/bits/stl_vector.h: + +/usr/include/c++/11.2.0/debug/assertions.h: + +/usr/include/c++/11.2.0/bits/vector.tcc: + +/usr/include/bits/types/struct_FILE.h: + +/usr/include/bits/environments.h: diff --git a/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o b/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o index de6a8e7ee3919cb65204230cf8bab5a9b3059b0d..37c41362270cfce9656090da42036adba22b75f7 100644 GIT binary patch literal 131904 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 literal 53728 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 diff --git a/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o.d b/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o.d index 3058386..65c8555 100644 --- a/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o.d +++ b/build/CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o.d @@ -185,554 +185,15 @@ CMakeFiles/HLlib.dir/src/HiddenLines.cpp.o: \ /usr/include/c++/11.2.0/bits/stl_bvector.h \ /usr/include/c++/11.2.0/bits/vector.tcc \ /usr/include/c++/11.2.0/pstl/execution_defs.h \ - /home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/gnuplot-iostream.h \ + /home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/gnuplot_i.hpp \ /usr/include/c++/11.2.0/sstream /usr/include/c++/11.2.0/bits/sstream.tcc \ - /usr/include/c++/11.2.0/iomanip /usr/include/c++/11.2.0/locale \ - /usr/include/c++/11.2.0/bits/locale_facets_nonio.h \ - /usr/include/c++/11.2.0/ctime \ - /usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/time_members.h \ - /usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/messages_members.h \ - /usr/include/libintl.h \ - /usr/include/c++/11.2.0/bits/locale_facets_nonio.tcc \ - /usr/include/c++/11.2.0/bits/locale_conv.h \ - /usr/include/c++/11.2.0/bits/unique_ptr.h \ - /usr/include/c++/11.2.0/bits/quoted_string.h \ - /usr/include/c++/11.2.0/complex \ - /usr/include/boost/iostreams/device/file_descriptor.hpp \ - /usr/include/boost/cstdint.hpp /usr/include/boost/config.hpp \ - /usr/include/boost/config/user.hpp \ - /usr/include/boost/config/detail/select_compiler_config.hpp \ - /usr/include/boost/config/compiler/gcc.hpp \ - /usr/include/c++/11.2.0/cstddef \ - /usr/include/boost/config/detail/select_stdlib_config.hpp \ - /usr/include/c++/11.2.0/version \ - /usr/include/boost/config/stdlib/libstdcpp3.hpp /usr/include/unistd.h \ + /usr/include/c++/11.2.0/list /usr/include/c++/11.2.0/bits/stl_list.h \ + /usr/include/c++/11.2.0/bits/allocated_ptr.h \ + /usr/include/c++/11.2.0/bits/list.tcc /usr/include/unistd.h \ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ /usr/include/bits/confname.h /usr/include/bits/getopt_posix.h \ /usr/include/bits/getopt_core.h /usr/include/bits/unistd_ext.h \ /usr/include/linux/close_range.h \ - /usr/include/boost/config/detail/select_platform_config.hpp \ - /usr/include/boost/config/platform/linux.hpp \ - /usr/include/boost/config/detail/posix_features.hpp \ - /usr/include/boost/config/detail/suffix.hpp \ - /usr/include/boost/config/helper_macros.hpp \ - /usr/include/boost/config/detail/cxx_composite.hpp \ - /usr/include/boost/iostreams/categories.hpp \ - /usr/include/boost/iostreams/detail/config/auto_link.hpp \ - /usr/include/boost/config/auto_link.hpp \ - /usr/include/boost/iostreams/detail/config/dyn_link.hpp \ - /usr/include/boost/detail/workaround.hpp \ - /usr/include/boost/config/workaround.hpp \ - /usr/include/boost/iostreams/detail/config/windows_posix.hpp \ - /usr/include/boost/iostreams/detail/file_handle.hpp \ - /usr/include/boost/iostreams/detail/ios.hpp \ - /usr/include/boost/iostreams/detail/config/wide_streams.hpp \ - /usr/include/boost/iostreams/detail/path.hpp \ - /usr/include/c++/11.2.0/cstring /usr/include/string.h \ - /usr/include/strings.h /usr/include/boost/static_assert.hpp \ - /usr/include/boost/type.hpp /usr/include/boost/type_traits/is_same.hpp \ - /usr/include/boost/type_traits/integral_constant.hpp \ - /usr/include/boost/iostreams/positioning.hpp \ - /usr/include/boost/integer_traits.hpp /usr/include/boost/limits.hpp \ - /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include-fixed/limits.h \ - /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include-fixed/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /usr/include/bits/uio_lim.h \ - /usr/include/boost/iostreams/detail/config/codecvt.hpp \ - /usr/include/boost/iostreams/detail/config/fpos.hpp \ - /usr/include/boost/iostreams/detail/config/disable_warnings.hpp \ - /usr/include/boost/iostreams/detail/config/enable_warnings.hpp \ - /usr/include/boost/shared_ptr.hpp \ - /usr/include/boost/smart_ptr/shared_ptr.hpp \ - /usr/include/boost/smart_ptr/detail/shared_count.hpp \ - /usr/include/boost/smart_ptr/bad_weak_ptr.hpp \ - /usr/include/boost/smart_ptr/detail/sp_counted_base.hpp \ - /usr/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp \ - /usr/include/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp \ - /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp \ - /usr/include/boost/smart_ptr/detail/sp_typeinfo_.hpp \ - /usr/include/boost/smart_ptr/detail/sp_counted_impl.hpp \ - /usr/include/boost/smart_ptr/detail/sp_noexcept.hpp \ - /usr/include/boost/checked_delete.hpp \ - /usr/include/boost/core/checked_delete.hpp \ - /usr/include/boost/core/addressof.hpp /usr/include/c++/11.2.0/memory \ - /usr/include/c++/11.2.0/bits/stl_raw_storage_iter.h \ - /usr/include/c++/11.2.0/bits/align.h /usr/include/c++/11.2.0/bit \ - /usr/include/c++/11.2.0/bits/shared_ptr.h \ - /usr/include/c++/11.2.0/bits/shared_ptr_base.h \ - /usr/include/c++/11.2.0/bits/allocated_ptr.h \ - /usr/include/c++/11.2.0/ext/concurrence.h \ - /usr/include/c++/11.2.0/bits/shared_ptr_atomic.h \ - /usr/include/c++/11.2.0/bits/atomic_base.h \ - /usr/include/c++/11.2.0/bits/atomic_lockfree_defines.h \ - /usr/include/c++/11.2.0/backward/auto_ptr.h \ - /usr/include/c++/11.2.0/pstl/glue_memory_defs.h \ - /usr/include/boost/smart_ptr/detail/sp_disable_deprecated.hpp \ - /usr/include/boost/throw_exception.hpp \ - /usr/include/boost/exception/exception.hpp \ - /usr/include/boost/assert/source_location.hpp \ - /usr/include/boost/current_function.hpp \ - /usr/include/boost/smart_ptr/detail/sp_convertible.hpp \ - /usr/include/boost/smart_ptr/detail/sp_nullptr_t.hpp \ - /usr/include/boost/assert.hpp /usr/include/assert.h \ - /usr/include/boost/smart_ptr/detail/spinlock_pool.hpp \ - /usr/include/boost/smart_ptr/detail/spinlock.hpp \ - /usr/include/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp \ - /usr/include/boost/smart_ptr/detail/yield_k.hpp \ - /usr/include/boost/smart_ptr/detail/sp_thread_pause.hpp \ - /usr/include/boost/smart_ptr/detail/sp_thread_sleep.hpp \ - /usr/include/boost/config/pragma_message.hpp \ - /usr/include/boost/smart_ptr/detail/operator_bool.hpp \ - /usr/include/boost/smart_ptr/detail/local_sp_deleter.hpp \ - /usr/include/boost/smart_ptr/detail/local_counted_base.hpp \ - /usr/include/boost/config/abi_prefix.hpp \ - /usr/include/boost/config/abi_suffix.hpp \ - /usr/include/boost/iostreams/stream.hpp \ - /usr/include/boost/iostreams/constants.hpp \ - /usr/include/boost/iostreams/detail/char_traits.hpp \ - /usr/include/boost/iostreams/detail/config/overload_resolution.hpp \ - /usr/include/boost/iostreams/detail/config/gcc.hpp \ - /usr/include/boost/iostreams/detail/forward.hpp \ - /usr/include/boost/iostreams/detail/config/limits.hpp \ - /usr/include/boost/iostreams/detail/push_params.hpp \ - /usr/include/boost/preprocessor/arithmetic/dec.hpp \ - /usr/include/boost/preprocessor/config/config.hpp \ - /usr/include/boost/preprocessor/config/limits.hpp \ - /usr/include/boost/preprocessor/arithmetic/limits/dec_256.hpp \ - /usr/include/boost/preprocessor/arithmetic/inc.hpp \ - /usr/include/boost/preprocessor/arithmetic/limits/inc_256.hpp \ - /usr/include/boost/preprocessor/punctuation/comma_if.hpp \ - /usr/include/boost/preprocessor/control/if.hpp \ - /usr/include/boost/preprocessor/control/iif.hpp \ - /usr/include/boost/preprocessor/logical/bool.hpp \ - /usr/include/boost/preprocessor/logical/limits/bool_256.hpp \ - /usr/include/boost/preprocessor/facilities/empty.hpp \ - /usr/include/boost/preprocessor/punctuation/comma.hpp \ - /usr/include/boost/preprocessor/repetition/enum_binary_params.hpp \ - /usr/include/boost/preprocessor/cat.hpp \ - /usr/include/boost/preprocessor/repetition/repeat.hpp \ - /usr/include/boost/preprocessor/debug/error.hpp \ - /usr/include/boost/preprocessor/detail/auto_rec.hpp \ - /usr/include/boost/preprocessor/detail/limits/auto_rec_256.hpp \ - /usr/include/boost/preprocessor/tuple/eat.hpp \ - /usr/include/boost/preprocessor/repetition/limits/repeat_256.hpp \ - /usr/include/boost/preprocessor/tuple/elem.hpp \ - /usr/include/boost/preprocessor/facilities/expand.hpp \ - /usr/include/boost/preprocessor/facilities/overload.hpp \ - /usr/include/boost/preprocessor/variadic/size.hpp \ - /usr/include/boost/preprocessor/facilities/check_empty.hpp \ - /usr/include/boost/preprocessor/variadic/has_opt.hpp \ - /usr/include/boost/preprocessor/variadic/limits/size_64.hpp \ - /usr/include/boost/preprocessor/tuple/rem.hpp \ - /usr/include/boost/preprocessor/tuple/detail/is_single_return.hpp \ - /usr/include/boost/preprocessor/variadic/elem.hpp \ - /usr/include/boost/preprocessor/variadic/limits/elem_64.hpp \ - /usr/include/boost/preprocessor/repetition/enum_params.hpp \ - /usr/include/boost/preprocessor/repetition/repeat_from_to.hpp \ - /usr/include/boost/preprocessor/arithmetic/add.hpp \ - /usr/include/boost/preprocessor/control/while.hpp \ - /usr/include/boost/preprocessor/list/fold_left.hpp \ - /usr/include/boost/preprocessor/list/detail/fold_left.hpp \ - /usr/include/boost/preprocessor/control/expr_iif.hpp \ - /usr/include/boost/preprocessor/list/adt.hpp \ - /usr/include/boost/preprocessor/detail/is_binary.hpp \ - /usr/include/boost/preprocessor/detail/check.hpp \ - /usr/include/boost/preprocessor/logical/compl.hpp \ - /usr/include/boost/preprocessor/list/detail/limits/fold_left_256.hpp \ - /usr/include/boost/preprocessor/list/limits/fold_left_256.hpp \ - /usr/include/boost/preprocessor/list/fold_right.hpp \ - /usr/include/boost/preprocessor/list/detail/fold_right.hpp \ - /usr/include/boost/preprocessor/list/reverse.hpp \ - /usr/include/boost/preprocessor/facilities/identity.hpp \ - /usr/include/boost/preprocessor/list/detail/limits/fold_right_256.hpp \ - /usr/include/boost/preprocessor/logical/bitand.hpp \ - /usr/include/boost/preprocessor/control/detail/while.hpp \ - /usr/include/boost/preprocessor/control/detail/limits/while_256.hpp \ - /usr/include/boost/preprocessor/control/limits/while_256.hpp \ - /usr/include/boost/preprocessor/logical/bitor.hpp \ - /usr/include/boost/preprocessor/arithmetic/detail/is_maximum_number.hpp \ - /usr/include/boost/preprocessor/comparison/equal.hpp \ - /usr/include/boost/preprocessor/comparison/not_equal.hpp \ - /usr/include/boost/preprocessor/comparison/limits/not_equal_256.hpp \ - /usr/include/boost/preprocessor/arithmetic/detail/maximum_number.hpp \ - /usr/include/boost/preprocessor/arithmetic/detail/is_minimum_number.hpp \ - /usr/include/boost/preprocessor/logical/not.hpp \ - /usr/include/boost/preprocessor/arithmetic/sub.hpp \ - /usr/include/boost/preprocessor/logical/and.hpp \ - /usr/include/boost/iostreams/detail/iostream.hpp \ - /usr/include/boost/iostreams/detail/select.hpp \ - /usr/include/boost/type_traits/is_base_and_derived.hpp \ - /usr/include/boost/type_traits/intrinsics.hpp \ - /usr/include/boost/type_traits/detail/config.hpp \ - /usr/include/boost/version.hpp \ - /usr/include/boost/type_traits/remove_cv.hpp \ - /usr/include/boost/mpl/eval_if.hpp /usr/include/boost/mpl/if.hpp \ - /usr/include/boost/mpl/aux_/value_wknd.hpp \ - /usr/include/boost/mpl/aux_/static_cast.hpp \ - /usr/include/boost/mpl/aux_/config/workaround.hpp \ - /usr/include/boost/mpl/aux_/config/integral.hpp \ - /usr/include/boost/mpl/aux_/config/msvc.hpp \ - /usr/include/boost/mpl/aux_/config/eti.hpp \ - /usr/include/boost/mpl/aux_/na_spec.hpp \ - /usr/include/boost/mpl/lambda_fwd.hpp \ - /usr/include/boost/mpl/void_fwd.hpp \ - /usr/include/boost/mpl/aux_/adl_barrier.hpp \ - /usr/include/boost/mpl/aux_/config/adl.hpp \ - /usr/include/boost/mpl/aux_/config/intel.hpp \ - /usr/include/boost/mpl/aux_/config/gcc.hpp \ - /usr/include/boost/mpl/aux_/na.hpp /usr/include/boost/mpl/bool.hpp \ - /usr/include/boost/mpl/bool_fwd.hpp \ - /usr/include/boost/mpl/integral_c_tag.hpp \ - /usr/include/boost/mpl/aux_/config/static_constant.hpp \ - /usr/include/boost/mpl/aux_/na_fwd.hpp \ - /usr/include/boost/mpl/aux_/config/ctps.hpp \ - /usr/include/boost/mpl/aux_/config/lambda.hpp \ - /usr/include/boost/mpl/aux_/config/ttp.hpp \ - /usr/include/boost/mpl/int.hpp /usr/include/boost/mpl/int_fwd.hpp \ - /usr/include/boost/mpl/aux_/nttp_decl.hpp \ - /usr/include/boost/mpl/aux_/config/nttp.hpp \ - /usr/include/boost/mpl/aux_/integral_wrapper.hpp \ - /usr/include/boost/mpl/aux_/lambda_arity_param.hpp \ - /usr/include/boost/mpl/aux_/template_arity_fwd.hpp \ - /usr/include/boost/mpl/aux_/arity.hpp \ - /usr/include/boost/mpl/aux_/config/dtp.hpp \ - /usr/include/boost/mpl/aux_/preprocessor/params.hpp \ - /usr/include/boost/mpl/aux_/config/preprocessor.hpp \ - /usr/include/boost/preprocessor/comma_if.hpp \ - /usr/include/boost/preprocessor/repeat.hpp \ - /usr/include/boost/preprocessor/inc.hpp \ - /usr/include/boost/mpl/aux_/preprocessor/enum.hpp \ - /usr/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp \ - /usr/include/boost/mpl/limits/arity.hpp \ - /usr/include/boost/preprocessor/identity.hpp \ - /usr/include/boost/preprocessor/empty.hpp \ - /usr/include/boost/mpl/aux_/config/overload_resolution.hpp \ - /usr/include/boost/mpl/aux_/lambda_support.hpp \ - /usr/include/boost/mpl/identity.hpp /usr/include/boost/mpl/void.hpp \ - /usr/include/boost/iostreams/stream_buffer.hpp \ - /usr/include/boost/iostreams/detail/streambuf/direct_streambuf.hpp \ - /usr/include/boost/core/typeinfo.hpp \ - /usr/include/boost/core/demangle.hpp /usr/include/c++/11.2.0/cxxabi.h \ - /usr/include/c++/11.2.0/x86_64-pc-linux-gnu/bits/cxxabi_tweaks.h \ - /usr/include/boost/iostreams/detail/error.hpp \ - /usr/include/boost/iostreams/detail/execute.hpp \ - /usr/include/boost/preprocessor/iteration/local.hpp \ - /usr/include/boost/preprocessor/slot/slot.hpp \ - /usr/include/boost/preprocessor/slot/detail/def.hpp \ - /usr/include/boost/utility/result_of.hpp \ - /usr/include/boost/type_traits/is_class.hpp \ - /usr/include/boost/type_traits/is_pointer.hpp \ - /usr/include/boost/type_traits/is_member_function_pointer.hpp \ - /usr/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp \ - /usr/include/boost/type_traits/remove_reference.hpp \ - /usr/include/boost/type_traits/declval.hpp \ - /usr/include/boost/type_traits/add_rvalue_reference.hpp \ - /usr/include/boost/type_traits/is_void.hpp \ - /usr/include/boost/type_traits/is_reference.hpp \ - /usr/include/boost/type_traits/is_lvalue_reference.hpp \ - /usr/include/boost/type_traits/is_rvalue_reference.hpp \ - /usr/include/boost/type_traits/conditional.hpp \ - /usr/include/boost/type_traits/type_identity.hpp \ - /usr/include/boost/core/enable_if.hpp \ - /usr/include/boost/utility/detail/result_of_variadic.hpp \ - /usr/include/boost/preprocessor/iteration/detail/local.hpp \ - /usr/include/boost/preprocessor/iteration/detail/limits/local_256.hpp \ - /usr/include/boost/iostreams/detail/functional.hpp \ - /usr/include/boost/iostreams/close.hpp \ - /usr/include/boost/iostreams/flush.hpp \ - /usr/include/boost/iostreams/detail/dispatch.hpp \ - /usr/include/boost/iostreams/traits.hpp \ - /usr/include/boost/iostreams/detail/bool_trait_def.hpp \ - /usr/include/boost/iostreams/detail/template_params.hpp \ - /usr/include/boost/preprocessor/control/expr_if.hpp \ - /usr/include/boost/type_traits/detail/yes_no_type.hpp \ - /usr/include/boost/iostreams/detail/is_iterator_range.hpp \ - /usr/include/boost/iostreams/detail/select_by_size.hpp \ - /usr/include/boost/iostreams/detail/wrap_unwrap.hpp \ - /usr/include/boost/iostreams/detail/enable_if_stream.hpp \ - /usr/include/boost/utility/enable_if.hpp \ - /usr/include/boost/iostreams/traits_fwd.hpp /usr/include/boost/ref.hpp \ - /usr/include/boost/core/ref.hpp /usr/include/boost/mpl/or.hpp \ - /usr/include/boost/mpl/aux_/config/use_preprocessed.hpp \ - /usr/include/boost/mpl/aux_/nested_type_wknd.hpp \ - /usr/include/boost/mpl/aux_/include_preprocessed.hpp \ - /usr/include/boost/mpl/aux_/config/compiler.hpp \ - /usr/include/boost/preprocessor/stringize.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/or.hpp \ - /usr/include/boost/range/iterator_range.hpp \ - /usr/include/boost/range/iterator_range_core.hpp \ - /usr/include/boost/iterator/iterator_traits.hpp \ - /usr/include/c++/11.2.0/iterator \ - /usr/include/c++/11.2.0/bits/stream_iterator.h \ - /usr/include/boost/iterator/iterator_facade.hpp \ - /usr/include/boost/iterator/interoperable.hpp \ - /usr/include/boost/type_traits/is_convertible.hpp \ - /usr/include/boost/type_traits/is_complete.hpp \ - /usr/include/boost/type_traits/is_function.hpp \ - /usr/include/boost/type_traits/detail/is_function_cxx_11.hpp \ - /usr/include/boost/type_traits/is_array.hpp \ - /usr/include/boost/type_traits/is_arithmetic.hpp \ - /usr/include/boost/type_traits/is_integral.hpp \ - /usr/include/boost/type_traits/is_floating_point.hpp \ - /usr/include/boost/type_traits/is_abstract.hpp \ - /usr/include/boost/type_traits/add_lvalue_reference.hpp \ - /usr/include/boost/type_traits/add_reference.hpp \ - /usr/include/boost/iterator/detail/config_def.hpp \ - /usr/include/boost/iterator/detail/config_undef.hpp \ - /usr/include/boost/iterator/iterator_categories.hpp \ - /usr/include/boost/mpl/placeholders.hpp /usr/include/boost/mpl/arg.hpp \ - /usr/include/boost/mpl/arg_fwd.hpp \ - /usr/include/boost/mpl/aux_/na_assert.hpp \ - /usr/include/boost/mpl/assert.hpp /usr/include/boost/mpl/not.hpp \ - /usr/include/boost/mpl/aux_/yes_no.hpp \ - /usr/include/boost/mpl/aux_/config/arrays.hpp \ - /usr/include/boost/mpl/aux_/config/gpu.hpp \ - /usr/include/boost/mpl/aux_/config/pp_counter.hpp \ - /usr/include/boost/mpl/aux_/arity_spec.hpp \ - /usr/include/boost/mpl/aux_/arg_typedef.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp \ - /usr/include/boost/iterator/detail/facade_iterator_category.hpp \ - /usr/include/boost/core/use_default.hpp /usr/include/boost/mpl/and.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/and.hpp \ - /usr/include/boost/type_traits/is_const.hpp \ - /usr/include/boost/detail/indirect_traits.hpp \ - /usr/include/boost/type_traits/is_volatile.hpp \ - /usr/include/boost/type_traits/is_member_pointer.hpp \ - /usr/include/boost/type_traits/remove_pointer.hpp \ - /usr/include/boost/detail/select_type.hpp \ - /usr/include/boost/iterator/detail/enable_if.hpp \ - /usr/include/boost/type_traits/add_const.hpp \ - /usr/include/boost/type_traits/add_pointer.hpp \ - /usr/include/boost/type_traits/remove_const.hpp \ - /usr/include/boost/type_traits/is_pod.hpp \ - /usr/include/boost/type_traits/is_scalar.hpp \ - /usr/include/boost/type_traits/is_enum.hpp \ - /usr/include/boost/mpl/always.hpp \ - /usr/include/boost/mpl/aux_/preprocessor/default_params.hpp \ - /usr/include/boost/mpl/apply.hpp /usr/include/boost/mpl/apply_fwd.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp \ - /usr/include/boost/mpl/apply_wrap.hpp \ - /usr/include/boost/mpl/aux_/has_apply.hpp \ - /usr/include/boost/mpl/has_xxx.hpp \ - /usr/include/boost/mpl/aux_/type_wrapper.hpp \ - /usr/include/boost/mpl/aux_/config/has_xxx.hpp \ - /usr/include/boost/mpl/aux_/config/msvc_typename.hpp \ - /usr/include/boost/preprocessor/array/elem.hpp \ - /usr/include/boost/preprocessor/array/data.hpp \ - /usr/include/boost/preprocessor/array/size.hpp \ - /usr/include/boost/preprocessor/repetition/enum_trailing_params.hpp \ - /usr/include/boost/mpl/aux_/config/has_apply.hpp \ - /usr/include/boost/mpl/aux_/msvc_never_true.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp \ - /usr/include/boost/mpl/lambda.hpp /usr/include/boost/mpl/bind.hpp \ - /usr/include/boost/mpl/bind_fwd.hpp \ - /usr/include/boost/mpl/aux_/config/bind.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp \ - /usr/include/boost/mpl/next.hpp /usr/include/boost/mpl/next_prior.hpp \ - /usr/include/boost/mpl/aux_/common_name_wknd.hpp \ - /usr/include/boost/mpl/protect.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp \ - /usr/include/boost/mpl/aux_/full_lambda.hpp \ - /usr/include/boost/mpl/quote.hpp \ - /usr/include/boost/mpl/aux_/has_type.hpp \ - /usr/include/boost/mpl/aux_/config/bcc.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp \ - /usr/include/boost/mpl/aux_/template_arity.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp \ - /usr/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp \ - /usr/include/boost/range/functions.hpp \ - /usr/include/boost/range/begin.hpp /usr/include/boost/range/config.hpp \ - /usr/include/boost/range/iterator.hpp \ - /usr/include/boost/range/range_fwd.hpp \ - /usr/include/boost/range/mutable_iterator.hpp \ - /usr/include/boost/range/detail/extract_optional_type.hpp \ - /usr/include/boost/range/detail/msvc_has_iterator_workaround.hpp \ - /usr/include/boost/range/const_iterator.hpp \ - /usr/include/boost/range/end.hpp \ - /usr/include/boost/range/detail/implementation_help.hpp \ - /usr/include/boost/range/detail/common.hpp \ - /usr/include/boost/range/detail/sfinae.hpp \ - /usr/include/boost/range/size.hpp /usr/include/boost/range/size_type.hpp \ - /usr/include/boost/range/difference_type.hpp \ - /usr/include/boost/range/has_range_iterator.hpp \ - /usr/include/boost/range/concepts.hpp \ - /usr/include/boost/concept_check.hpp \ - /usr/include/boost/concept/assert.hpp \ - /usr/include/boost/concept/detail/general.hpp \ - /usr/include/boost/concept/detail/backward_compatibility.hpp \ - /usr/include/boost/concept/detail/has_constraints.hpp \ - /usr/include/boost/type_traits/conversion_traits.hpp \ - /usr/include/boost/concept/usage.hpp \ - /usr/include/boost/concept/detail/concept_def.hpp \ - /usr/include/boost/preprocessor/seq/for_each_i.hpp \ - /usr/include/boost/preprocessor/repetition/for.hpp \ - /usr/include/boost/preprocessor/repetition/detail/for.hpp \ - /usr/include/boost/preprocessor/repetition/detail/limits/for_256.hpp \ - /usr/include/boost/preprocessor/repetition/limits/for_256.hpp \ - /usr/include/boost/preprocessor/seq/seq.hpp \ - /usr/include/boost/preprocessor/seq/elem.hpp \ - /usr/include/boost/preprocessor/seq/limits/elem_256.hpp \ - /usr/include/boost/preprocessor/seq/size.hpp \ - /usr/include/boost/preprocessor/seq/limits/size_256.hpp \ - /usr/include/boost/preprocessor/seq/detail/is_empty.hpp \ - /usr/include/boost/preprocessor/seq/enum.hpp \ - /usr/include/boost/preprocessor/seq/limits/enum_256.hpp \ - /usr/include/boost/concept/detail/concept_undef.hpp \ - /usr/include/boost/iterator/iterator_concepts.hpp \ - /usr/include/boost/range/value_type.hpp \ - /usr/include/boost/range/detail/misc_concept.hpp \ - /usr/include/boost/type_traits/make_unsigned.hpp \ - /usr/include/boost/type_traits/is_signed.hpp \ - /usr/include/c++/11.2.0/climits \ - /usr/include/boost/type_traits/is_unsigned.hpp \ - /usr/include/boost/type_traits/add_volatile.hpp \ - /usr/include/boost/range/detail/has_member_size.hpp \ - /usr/include/boost/utility.hpp \ - /usr/include/boost/utility/base_from_member.hpp \ - /usr/include/boost/utility/binary.hpp \ - /usr/include/boost/preprocessor/control/deduce_d.hpp \ - /usr/include/boost/preprocessor/seq/cat.hpp \ - /usr/include/boost/preprocessor/seq/fold_left.hpp \ - /usr/include/boost/preprocessor/seq/limits/fold_left_256.hpp \ - /usr/include/boost/preprocessor/seq/transform.hpp \ - /usr/include/boost/preprocessor/arithmetic/mod.hpp \ - /usr/include/boost/preprocessor/arithmetic/detail/div_base.hpp \ - /usr/include/boost/preprocessor/comparison/less_equal.hpp \ - /usr/include/boost/preprocessor/arithmetic/detail/is_1_number.hpp \ - /usr/include/boost/utility/identity_type.hpp \ - /usr/include/boost/type_traits/function_traits.hpp \ - /usr/include/boost/core/noncopyable.hpp \ - /usr/include/boost/range/distance.hpp \ - /usr/include/boost/iterator/distance.hpp \ - /usr/include/boost/range/empty.hpp /usr/include/boost/range/rbegin.hpp \ - /usr/include/boost/range/reverse_iterator.hpp \ - /usr/include/boost/iterator/reverse_iterator.hpp \ - /usr/include/boost/iterator/iterator_adaptor.hpp \ - /usr/include/boost/range/rend.hpp \ - /usr/include/boost/range/algorithm/equal.hpp \ - /usr/include/boost/range/detail/safe_bool.hpp \ - /usr/include/boost/next_prior.hpp \ - /usr/include/boost/type_traits/has_plus.hpp \ - /usr/include/boost/type_traits/detail/has_binary_operator.hpp \ - /usr/include/boost/type_traits/make_void.hpp \ - /usr/include/boost/type_traits/has_plus_assign.hpp \ - /usr/include/boost/type_traits/has_minus.hpp \ - /usr/include/boost/type_traits/has_minus_assign.hpp \ - /usr/include/boost/iterator/advance.hpp \ - /usr/include/boost/range/iterator_range_io.hpp \ - /usr/include/boost/iostreams/detail/streambuf.hpp \ - /usr/include/boost/iostreams/operations_fwd.hpp \ - /usr/include/boost/iostreams/detail/adapter/non_blocking_adapter.hpp \ - /usr/include/boost/iostreams/read.hpp \ - /usr/include/boost/iostreams/char_traits.hpp \ - /usr/include/boost/iostreams/seek.hpp \ - /usr/include/boost/iostreams/write.hpp \ - /usr/include/boost/iostreams/detail/optional.hpp \ - /usr/include/boost/type_traits/aligned_storage.hpp \ - /usr/include/boost/type_traits/alignment_of.hpp \ - /usr/include/boost/type_traits/type_with_alignment.hpp \ - /usr/include/boost/iostreams/detail/streambuf/linked_streambuf.hpp \ - /usr/include/boost/iostreams/operations.hpp \ - /usr/include/boost/iostreams/imbue.hpp \ - /usr/include/boost/iostreams/input_sequence.hpp \ - /usr/include/boost/iostreams/optimal_buffer_size.hpp \ - /usr/include/boost/iostreams/output_sequence.hpp \ - /usr/include/boost/iostreams/detail/streambuf/indirect_streambuf.hpp \ - /usr/include/c++/11.2.0/cassert \ - /usr/include/boost/iostreams/detail/adapter/concept_adapter.hpp \ - /usr/include/boost/iostreams/concepts.hpp \ - /usr/include/boost/iostreams/detail/default_arg.hpp \ - /usr/include/boost/iostreams/detail/call_traits.hpp \ - /usr/include/boost/iostreams/detail/config/unreachable_return.hpp \ - /usr/include/boost/iostreams/device/null.hpp \ - /usr/include/boost/iostreams/detail/buffer.hpp \ - /usr/include/boost/iostreams/checked_operations.hpp \ - /usr/include/boost/iostreams/get.hpp \ - /usr/include/boost/iostreams/put.hpp \ - /usr/include/boost/iostreams/detail/double_object.hpp \ - /usr/include/boost/call_traits.hpp \ - /usr/include/boost/detail/call_traits.hpp \ - /usr/include/boost/iostreams/detail/push.hpp \ - /usr/include/boost/iostreams/detail/adapter/range_adapter.hpp \ - /usr/include/boost/iostreams/pipeline.hpp \ - /usr/include/boost/iostreams/detail/resolve.hpp \ - /usr/include/boost/detail/is_incrementable.hpp \ - /usr/include/boost/type_traits/detail/bool_trait_undef.hpp \ - /usr/include/boost/iostreams/detail/adapter/mode_adapter.hpp \ - /usr/include/boost/iostreams/detail/adapter/output_iterator_adapter.hpp \ - /usr/include/boost/iostreams/detail/is_dereferenceable.hpp \ - /usr/include/boost/iostreams/device/array.hpp \ - /usr/include/boost/tuple/tuple.hpp \ - /usr/include/boost/tuple/detail/tuple_basic.hpp \ - /usr/include/boost/type_traits/cv_traits.hpp \ - /usr/include/boost/type_traits/add_cv.hpp \ - /usr/include/boost/type_traits/remove_volatile.hpp \ - /usr/include/boost/utility/swap.hpp /usr/include/boost/core/swap.hpp \ - /usr/include/boost/filesystem.hpp \ - /usr/include/boost/filesystem/config.hpp \ - /usr/include/boost/system/api_config.hpp \ - /usr/include/boost/filesystem/path.hpp \ - /usr/include/boost/filesystem/path_traits.hpp \ - /usr/include/boost/system/error_category.hpp \ - /usr/include/boost/system/detail/error_category.hpp \ - /usr/include/boost/system/detail/config.hpp \ - /usr/include/c++/11.2.0/atomic \ - /usr/include/boost/system/detail/error_category_impl.hpp \ - /usr/include/boost/system/detail/error_condition.hpp \ - /usr/include/boost/system/detail/generic_category.hpp \ - /usr/include/boost/system/detail/generic_category_message.hpp \ - /usr/include/boost/system/detail/enable_if.hpp \ - /usr/include/boost/system/detail/is_same.hpp \ - /usr/include/boost/system/detail/errc.hpp \ - /usr/include/boost/system/is_error_condition_enum.hpp \ - /usr/include/boost/system/detail/cerrno.hpp \ - /usr/include/boost/system/detail/append_int.hpp \ - /usr/include/boost/system/detail/snprintf.hpp \ - /usr/include/c++/11.2.0/cstdarg \ - /usr/include/boost/system/detail/error_code.hpp \ - /usr/include/boost/system/is_error_code_enum.hpp \ - /usr/include/boost/system/detail/system_category.hpp \ - /usr/include/boost/system/detail/system_category_impl.hpp \ - /usr/include/boost/system/detail/interop_category.hpp \ - /usr/include/boost/system/detail/std_category.hpp \ - /usr/include/boost/type_traits/decay.hpp \ - /usr/include/boost/type_traits/remove_bounds.hpp \ - /usr/include/boost/type_traits/remove_extent.hpp \ - /usr/include/c++/11.2.0/list /usr/include/c++/11.2.0/bits/stl_list.h \ - /usr/include/c++/11.2.0/bits/list.tcc \ - /usr/include/boost/filesystem/detail/header.hpp \ - /usr/include/boost/filesystem/detail/footer.hpp \ - /usr/include/boost/io/quoted.hpp \ - /usr/include/boost/io/detail/buffer_fill.hpp \ - /usr/include/boost/io/detail/ostream_guard.hpp \ - /usr/include/boost/io/ios_state.hpp /usr/include/boost/io_fwd.hpp \ - /usr/include/boost/functional/hash_fwd.hpp \ - /usr/include/boost/container_hash/hash_fwd.hpp \ - /usr/include/boost/filesystem/exception.hpp \ - /usr/include/boost/system/error_code.hpp \ - /usr/include/boost/system/error_condition.hpp \ - /usr/include/boost/system/errc.hpp \ - /usr/include/boost/system/generic_category.hpp \ - /usr/include/boost/system/system_category.hpp \ - /usr/include/boost/system/detail/throws.hpp \ - /usr/include/boost/system/system_error.hpp \ - /usr/include/boost/smart_ptr/intrusive_ptr.hpp \ - /usr/include/boost/config/no_tr1/functional.hpp \ - /usr/include/boost/smart_ptr/intrusive_ref_counter.hpp \ - /usr/include/boost/smart_ptr/detail/atomic_count.hpp \ - /usr/include/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp \ - /usr/include/boost/filesystem/directory.hpp \ - /usr/include/boost/filesystem/file_status.hpp \ - /usr/include/boost/detail/bitmask.hpp \ - /usr/include/boost/core/scoped_enum.hpp \ - /usr/include/boost/filesystem/operations.hpp \ - /usr/include/boost/filesystem/convenience.hpp \ - /usr/include/boost/filesystem/string_file.hpp \ - /usr/include/boost/filesystem/fstream.hpp \ /home/noah/Documents/School/CS-7353_Analysis-of-Algorithms/HW/HW4/src/HiddenLines.h \ /usr/include/c++/11.2.0/map /usr/include/c++/11.2.0/bits/stl_map.h \ /usr/include/c++/11.2.0/bits/stl_multimap.h \ diff --git a/build/libHLlib.a b/build/libHLlib.a index c28bfef6067baeb74cd11fedce6c51185e8cc0f5..52e6adeb8b9e6cb401ed65b7a510462df6a9b421 100644 GIT binary patch literal 137016 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 Nzx0&rEdHSR{{wV@%TNFS literal 57420 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�_<69}2@6@LCd`Wt=KR_&e_K1b6!fd@N#MN;B3!p9O z!9x-Q&BPvfyqDffOIcQUb|B)Z1;m;fhmG15|D<0F%i_B;vE-43l>=-ljLg=dYFqtH zbz|_=GZ71$9>&oA%`A$JPxm#lth(9F$U;DT2#r5!!`4LlLYe+X#j}vF$wLX`RZCNZ zW$}%aSy<}AH4La9&w_kUQkJh#?$m6oLt5<)M7>x#pA<>Q$iD}8ddEXcubtPU!O_D+LgJBRr={2SNBe=JEVT66 z`9B(5`C~lP1*810#xpuwM@z4rr=!6?$^;t!T09M2hxBw-k9Mz}*P}tZOi%n1pBn$T z|{BvUQDc3zMMwfBs){I&F2`R|nJ$8&1&XmB@Wj6mt}ic~CrE&ct#5sMoA z*o%+yg%;9peK6MlJ$R^3ZOz~l*A-#4E zh6eF^aa=I+|F}%A$zMAcK!YWkz$F!X95uWrVo0x@=b=IRHlaQk^WSDj&$JhzBwTFR zgl}Mny<|wgcnnDs-!_nNydi-x|MwA>-gT1AG6k z9GD`RUW-R*DQNc^{02D6NlUMtb5SDGU#vZ##0Yl&+w(IJiAi_0Xxh0ZOUDWRGo<`w zGl=D{>Cy3sMlrSYE2fHcD=rk!)sq#!()iXOy_cd-A3GX!NM zmM{F_H9AKBTDi4y4FE32J5MQow*Fk?aDAo@iAybC4U5;g6Q(ck5Ha%&2@JRF{{lKK B*~|a{ literal 55648 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 #include -#include "gnuplot-iostream.h" +//#include "gnuplot-iostream.h" +#include "gnuplot_i.hpp" #include "HiddenLines.h" +void wait_for_key(); // Programm halts until keypress HL::HL() { @@ -110,6 +112,10 @@ std::vector HL::construct_HWprob(){ //Set to hold all our Lines std::set sorted_lines; std::vector lines; + Gnuplot g1("lines"); + g1.set_title("Original Lines"); + g1.set_xrange(-20,20); + g1.set_yrange(-40,40); //Hold our doubles from each line std::vector tmp_data; @@ -164,9 +170,13 @@ std::vector HL::construct_HWprob(){ line.set_vis_end(std::numeric_limits::max()); *it = line; } + + g1.plot_slope(line.get_slope(),line.get_ycept(), "Line "+std::to_string(line.get_id())); } std::cout << "-----------------------------------------------------" << std::endl; + wait_for_key(); + return lines; } @@ -293,3 +303,21 @@ std::vector remove_invis(std::vector &merged){ } return tmp_vis; } + +//GNUPlot +void wait_for_key () +{ +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) // every keypress registered, also arrow keys + std::cout << std::endl << "Press any key to continue..." << std::endl; + + FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); + _getch(); +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + std::cout << std::endl << "Press ENTER to continue..." << std::endl; + + std::cin.clear(); + std::cin.ignore(std::cin.rdbuf()->in_avail()); + std::cin.get(); +#endif + return; +} \ No newline at end of file diff --git a/src/gnuplot_i.hpp b/src/gnuplot_i.hpp new file mode 100644 index 0000000..15f5cdc --- /dev/null +++ b/src/gnuplot_i.hpp @@ -0,0 +1,2114 @@ +//////////////////////////////////////////////////////////////////////////////// +/// +/// \brief A C++ interface to gnuplot. +/// +/// +/// The interface uses pipes and so won't run on a system that doesn't have +/// POSIX pipe support Tested on Windows (MinGW and Visual C++) and Linux (GCC) +/// +/// Version history: +/// 0. C interface +/// by N. Devillard (27/01/03) +/// 1. C++ interface: direct translation from the C interface +/// by Rajarshi Guha (07/03/03) +/// 2. corrections for Win32 compatibility +/// by V. Chyzhdzenka (20/05/03) +/// 3. some member functions added, corrections for Win32 and Linux +/// compatibility +/// by M. Burgis (10/03/08) +/// +/// Requirements: +/// * gnuplot has to be installed (http://www.gnuplot.info/download.html) +/// * for Windows: set Path-Variable for Gnuplot path +/// (e.g. C:/program files/gnuplot/bin) +/// or set Gnuplot path with: +/// Gnuplot::set_GNUPlotPath(const std::string &path); +/// +//////////////////////////////////////////////////////////////////////////////// + + +#ifndef _GNUPLOT_PIPES_H_ +#define _GNUPLOT_PIPES_H_ + + +#include +#include +#include +#include +#include // for std::ostringstream +#include +#include +#include // for getenv() +#include // for std::list + + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) +//defined for 32 and 64-bit environments +#include // for _access(), _mktemp() +#define GP_MAX_TMP_FILES 27 // 27 temporary files it's Microsoft restriction +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) +//all UNIX-like OSs (Linux, *BSD, MacOSX, Solaris, ...) +#include // for access(), mkstemp() +#define GP_MAX_TMP_FILES 64 +#else +#error unsupported or unknown operating system +#endif + +//declare classes in global namespace + + +class GnuplotException : public std::runtime_error +{ +public: + GnuplotException(const std::string &msg) : std::runtime_error(msg) {} +}; + + + +class Gnuplot +{ +private: + + //---------------------------------------------------------------------------------- + // member data + ///\brief pointer to the stream that can be used to write to the pipe + FILE *gnucmd; + ///\brief validation of gnuplot session + bool valid; + ///\brief true = 2d, false = 3d + bool two_dim; + ///\brief number of plots in session + int nplots; + ///\brief functions and data are displayed in a defined styles + std::string pstyle; + ///\brief interpolate and approximate data in defined styles (e.g. spline) + std::string smooth; + ///\brief list of created tmpfiles + std::vector tmpfile_list; + + //---------------------------------------------------------------------------------- + // static data + ///\brief number of all tmpfiles (number of tmpfiles restricted) + static int tmpfile_num; + ///\brief name of executed GNUPlot file + static std::string m_sGNUPlotFileName; + ///\brief gnuplot path + static std::string m_sGNUPlotPath; + ///\brief standart terminal, used by showonscreen + static std::string terminal_std; + + //---------------------------------------------------------------------------------- + // member functions (auxiliary functions) + // --------------------------------------------------- + ///\brief get_program_path(); and popen(); + /// + /// \param --> void + /// + /// \return <-- void + // --------------------------------------------------- + void init(); + // --------------------------------------------------- + ///\brief creates tmpfile and returns its name + /// + /// \param tmp --> points to the tempfile + /// + /// \return <-- the name of the tempfile + // --------------------------------------------------- + std::string create_tmpfile(std::ofstream &tmp); + + //---------------------------------------------------------------------------------- + ///\brief gnuplot path found? + /// + /// \param --- + /// + /// \return <-- found the gnuplot path (yes == true, no == false) + // --------------------------------------------------------------------------------- + static bool get_program_path(); + + // --------------------------------------------------------------------------------- + ///\brief checks if file is available + /// + /// \param filename --> the filename + /// \param mode --> the mode [optional,default value = 0] + /// + /// \return file exists (yes == true, no == false) + // --------------------------------------------------------------------------------- + bool file_available(const std::string &filename); + + // --------------------------------------------------------------------------------- + ///\brief checks if file exists + /// + /// \param filename --> the filename + /// \param mode --> the mode [optional,default value = 0] + /// + /// \return file exists (yes == true, no == false) + // --------------------------------------------------------------------------------- + static bool file_exists(const std::string &filename, int mode=0); + +public: + + // ---------------------------------------------------------------------------- + /// \brief optional function: set Gnuplot path manual + /// attention: for windows: path with slash '/' not backslash '\' + /// + /// \param path --> the gnuplot path + /// + /// \return true on success, false otherwise + // ---------------------------------------------------------------------------- + static bool set_GNUPlotPath(const std::string &path); + + + // ---------------------------------------------------------------------------- + /// optional: set standart terminal, used by showonscreen + /// defaults: Windows - win, Linux - x11, Mac - aqua + /// + /// \param type --> the terminal type + /// + /// \return --- + // ---------------------------------------------------------------------------- + static void set_terminal_std(const std::string &type); + + //----------------------------------------------------------------------------- + // constructors + // ---------------------------------------------------------------------------- + + + ///\brief set a style during construction + Gnuplot(const std::string &style = "points"); + + /// plot a single std::vector at one go + Gnuplot(const std::vector &x, + const std::string &title = "", + const std::string &style = "points", + const std::string &labelx = "x", + const std::string &labely = "y"); + + /// plot pairs std::vector at one go + Gnuplot(const std::vector &x, + const std::vector &y, + const std::string &title = "", + const std::string &style = "points", + const std::string &labelx = "x", + const std::string &labely = "y"); + + /// plot triples std::vector at one go + Gnuplot(const std::vector &x, + const std::vector &y, + const std::vector &z, + const std::string &title = "", + const std::string &style = "points", + const std::string &labelx = "x", + const std::string &labely = "y", + const std::string &labelz = "z"); + + /// destructor: needed to delete temporary files + ~Gnuplot(); + + + //---------------------------------------------------------------------------------- + + /// send a command to gnuplot + Gnuplot& cmd(const std::string &cmdstr); + // ------------------------------------------------------------------------- + ///\brief Sends a command to an active gnuplot session, identical to cmd() + /// send a command to gnuplot using the << operator + /// + /// \param cmdstr --> the command string + /// + /// \return <-- a reference to the gnuplot object + // ------------------------------------------------------------------------- + inline Gnuplot& operator<<(const std::string &cmdstr) + { + cmd(cmdstr); + return(*this); + } + + + + //-------------------------------------------------------------------------- + // show on screen or write to file + + /// sets terminal type to terminal_std + Gnuplot& showonscreen(); // window output is set by default (win/x11/aqua) + + /// Saves a gnuplot to a file named filename. Defaults to saving pdf + Gnuplot& savetofigure(const std::string filename, + const std::string terminal="ps"); + + //-------------------------------------------------------------------------- + // set and unset + + /// set line style (some of these styles require additional information): + /// lines, points, linespoints, impulses, dots, steps, fsteps, histeps, + /// boxes, histograms, filledcurves + Gnuplot& set_style(const std::string &stylestr = "points"); + + /// interpolation and approximation of data, arguments: + /// csplines, bezier, acsplines (for data values > 0), sbezier, unique, frequency + /// (works only with plot_x, plot_xy, plotfile_x, plotfile_xy + /// (if smooth is set, set_style has no effekt on data plotting) + Gnuplot& set_smooth(const std::string &stylestr = "csplines"); + + // ---------------------------------------------------------------------- + /// \brief unset smooth + /// attention: smooth is not set by default + /// + /// \param --- + /// + /// \return <-- a reference to a gnuplot object + // ---------------------------------------------------------------------- + inline Gnuplot& unset_smooth() + { + smooth = ""; + return *this; + }; + + + /// scales the size of the points used in plots + Gnuplot& set_pointsize(const double pointsize = 1.0); + + /// turns grid on/off + inline Gnuplot& set_grid() + { + cmd("set grid"); + return *this; + }; + /// grid is not set by default + inline Gnuplot& unset_grid() + { + cmd("unset grid"); + return *this; + }; + + // ----------------------------------------------- + /// set the mulitplot mode + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_multiplot() + { + cmd("set multiplot") ; + return *this; + }; + + // ----------------------------------------------- + /// unsets the mulitplot mode + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_multiplot() + { + cmd("unset multiplot"); + return *this; + }; + + + + /// set sampling rate of functions, or for interpolating data + Gnuplot& set_samples(const int samples = 100); + /// set isoline density (grid) for plotting functions as surfaces (for 3d plots) + Gnuplot& set_isosamples(const int isolines = 10); + + // -------------------------------------------------------------------------- + /// enables/disables hidden line removal for surface plotting (for 3d plot) + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // -------------------------------------------------------------------------- + Gnuplot& set_hidden3d() + { + cmd("set hidden3d"); + return *this; + }; + + // --------------------------------------------------------------------------- + /// hidden3d is not set by default + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // --------------------------------------------------------------------------- + inline Gnuplot& unset_hidden3d() + { + cmd("unset hidden3d"); + return *this; + }; + + /// enables/disables contour drawing for surfaces (for 3d plot) + /// base, surface, both + Gnuplot& set_contour(const std::string &position = "base"); + // -------------------------------------------------------------------------- + /// contour is not set by default, it disables contour drawing for surfaces + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& unset_contour() + { + cmd("unset contour"); + return *this; + }; + + // ------------------------------------------------------------ + /// enables/disables the display of surfaces (for 3d plot) + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& set_surface() + { + cmd("set surface"); + return *this; + }; + + // ---------------------------------------------------------- + /// surface is set by default, + /// it disables the display of surfaces (for 3d plot) + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& unset_surface() + { + cmd("unset surface"); + return *this; + } + + + /// switches legend on/off + /// position: inside/outside, left/center/right, top/center/bottom, nobox/box + Gnuplot& set_legend(const std::string &position = "default"); + + // ------------------------------------------------------------------ + /// \brief Switches legend off + /// attention:legend is set by default + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ------------------------------------------------------------------ + inline Gnuplot& unset_legend() + { + cmd("unset key"); + return *this; + } + + // ----------------------------------------------------------------------- + /// \brief sets and clears the title of a gnuplot session + /// + /// \param title --> the title of the plot [optional, default == ""] + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------------------------------- + inline Gnuplot& set_title(const std::string &title = "") + { + std::string cmdstr; + cmdstr = "set title \""; + cmdstr+=title; + cmdstr+="\""; + *this<set_title(); + return *this; + } + + + /// set x axis label + Gnuplot& set_ylabel(const std::string &label = "x"); + /// set y axis label + Gnuplot& set_xlabel(const std::string &label = "y"); + /// set z axis label + Gnuplot& set_zlabel(const std::string &label = "z"); + + /// set axis - ranges + Gnuplot& set_xrange(const double iFrom, + const double iTo); + /// set y-axis - ranges + Gnuplot& set_yrange(const double iFrom, + const double iTo); + /// set z-axis - ranges + Gnuplot& set_zrange(const double iFrom, + const double iTo); + /// autoscale axis (set by default) of xaxis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_xautoscale() + { + cmd("set xrange restore"); + cmd("set autoscale x"); + return *this; + }; + + // ----------------------------------------------- + /// autoscale axis (set by default) of yaxis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_yautoscale() + { + cmd("set yrange restore"); + cmd("set autoscale y"); + return *this; + }; + + // ----------------------------------------------- + /// autoscale axis (set by default) of zaxis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& set_zautoscale() + { + cmd("set zrange restore"); + cmd("set autoscale z"); + return *this; + }; + + + /// turns on/off log scaling for the specified xaxis (logscale is not set by default) + Gnuplot& set_xlogscale(const double base = 10); + /// turns on/off log scaling for the specified yaxis (logscale is not set by default) + Gnuplot& set_ylogscale(const double base = 10); + /// turns on/off log scaling for the specified zaxis (logscale is not set by default) + Gnuplot& set_zlogscale(const double base = 10); + + // ----------------------------------------------- + /// turns off log scaling for the x axis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_xlogscale() + { + cmd("unset logscale x"); + return *this; + }; + + // ----------------------------------------------- + /// turns off log scaling for the y axis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_ylogscale() + { + cmd("unset logscale y"); + return *this; + }; + + // ----------------------------------------------- + /// turns off log scaling for the z axis + /// + /// \param --- + /// + /// \return <-- reference to the gnuplot object + // ----------------------------------------------- + inline Gnuplot& unset_zlogscale() + { + cmd("unset logscale z"); + return *this; + }; + + + /// set palette range (autoscale by default) + Gnuplot& set_cbrange(const double iFrom, const double iTo); + + + //-------------------------------------------------------------------------- + // plot + + /// plot a single std::vector: x + /// from file + Gnuplot& plotfile_x(const std::string &filename, + const unsigned int column = 1, + const std::string &title = ""); + /// from std::vector + template + Gnuplot& plot_x(const X& x, const std::string &title = ""); + + template + Gnuplot& plot_x(const std::vector< X > &x, const std::vector &title); + + + /// plot x,y pairs: x y + /// from file + Gnuplot& plotfile_xy(const std::string &filename, + const unsigned int column_x = 1, + const unsigned int column_y = 2, + const std::string &title = ""); + /// from data + template + Gnuplot& plot_xy(const X& x, const Y& y, const std::string &title = ""); + + + /// plot x,y pairs with dy errorbars: x y dy + /// from file + Gnuplot& plotfile_xy_err(const std::string &filename, + const unsigned int column_x = 1, + const unsigned int column_y = 2, + const unsigned int column_dy = 3, + const std::string &title = ""); + /// from data + template + Gnuplot& plot_xy_err(const X &x, const Y &y, const E &dy, + const std::string &title = ""); + + + /// plot x,y,z triples: x y z + /// from file + Gnuplot& plotfile_xyz(const std::string &filename, + const unsigned int column_x = 1, + const unsigned int column_y = 2, + const unsigned int column_z = 3, + const std::string &title = ""); + /// from std::vector + template + Gnuplot& plot_xyz(const X &x, + const Y &y, + const Z &z, + const std::string &title = ""); + + + + /// plot an equation of the form: y = ax + b, you supply a and b + Gnuplot& plot_slope(const double a, + const double b, + const std::string &title = ""); + + + /// plot an equation supplied as a std::string y=f(x), write only the + /// function f(x) not y the independent variable has to be x + /// binary operators: ** exponentiation, * multiply, / divide, + add, - + /// substract, % modulo + /// unary operators: - minus, ! factorial + /// elementary functions: rand(x), abs(x), sgn(x), ceil(x), floor(x), + /// int(x), imag(x), real(x), arg(x), sqrt(x), exp(x), log(x), log10(x), + /// sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y,x), + /// sinh(x), cosh(x), tanh(x), asinh(x), acosh(x), atanh(x) + /// special functions: erf(x), erfc(x), inverf(x), gamma(x), igamma(a,x), + /// lgamma(x), ibeta(p,q,x), besj0(x), besj1(x), besy0(x), besy1(x), + /// lambertw(x) + /// statistical fuctions: norm(x), invnorm(x) + Gnuplot& plot_equation(const std::string &equation, + const std::string &title = ""); + + /// plot an equation supplied as a std::string z=f(x,y), write only the + /// function f(x,y) not z the independent variables have to be x and y + Gnuplot& plot_equation3d(const std::string &equation, + const std::string &title = ""); + + + /// plot image + Gnuplot& plot_image(const unsigned char *ucPicBuf, + const unsigned int iWidth, + const unsigned int iHeight, + const std::string &title = ""); + + + //-------------------------------------------------------------------------- + ///\brief replot repeats the last plot or splot command. + /// this can be useful for viewing a plot with different set options, + /// or when generating the same plot for several devices (showonscreen, + // savetofigure) + /// + /// \param --- + /// + /// \return --- + //-------------------------------------------------------------------------- + inline Gnuplot& replot(void) + { + if (nplots > 0) cmd("replot"); + return *this; + }; + + /// resets a gnuplot session (next plot will erase previous ones) + Gnuplot& reset_plot(); + + /// resets a gnuplot session and sets all variables to default + Gnuplot& reset_all(); + + /// deletes temporary files + void remove_tmpfiles(); + + // ------------------------------------------------------------------- + /// \brief Is the gnuplot session valid ?? + /// + /// + /// \param --- + /// + /// \return true if valid, false if not + // ------------------------------------------------------------------- + inline bool is_valid() + { + return(valid); + }; + +}; + +//------------------------------------------------------------------------------ +// +// initialize static data +// +int Gnuplot::tmpfile_num = 0; + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) +std::string Gnuplot::m_sGNUPlotFileName = "pgnuplot.exe"; +std::string Gnuplot::m_sGNUPlotPath = "C:/program files/gnuplot/bin/"; +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) +std::string Gnuplot::m_sGNUPlotFileName = "gnuplot"; +std::string Gnuplot::m_sGNUPlotPath = "/usr/local/bin/"; +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) +std::string Gnuplot::terminal_std = "windows"; +#elif ( defined(unix) || defined(__unix) || defined(__unix__) ) && !defined(__APPLE__) +std::string Gnuplot::terminal_std = "x11"; +#elif defined(__APPLE__) +std::string Gnuplot::terminal_std = "aqua"; +#endif + +//------------------------------------------------------------------------------ +// +// constructor: set a style during construction +// +inline Gnuplot::Gnuplot(const std::string &style) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) + +{ + init(); + set_style(style); +} + +//------------------------------------------------------------------------------ +// +// constructor: open a new session, plot a signal (x) +// +inline Gnuplot::Gnuplot(const std::vector &x, + const std::string &title, + const std::string &style, + const std::string &labelx, + const std::string &labely) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) +{ + init(); + + set_style(style); + set_xlabel(labelx); + set_ylabel(labely); + + plot_x(x,title); +} + + +//------------------------------------------------------------------------------ +// +// constructor: open a new session, plot a signal (x,y) +// +inline Gnuplot::Gnuplot(const std::vector &x, + const std::vector &y, + const std::string &title, + const std::string &style, + const std::string &labelx, + const std::string &labely) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) +{ + init(); + + set_style(style); + set_xlabel(labelx); + set_ylabel(labely); + + plot_xy(x,y,title); +} + + +//------------------------------------------------------------------------------ +// +// constructor: open a new session, plot a signal (x,y,z) +// +inline Gnuplot::Gnuplot(const std::vector &x, + const std::vector &y, + const std::vector &z, + const std::string &title, + const std::string &style, + const std::string &labelx, + const std::string &labely, + const std::string &labelz) + :gnucmd(NULL) ,valid(false) ,two_dim(false) ,nplots(0) +{ + init(); + + set_style(style); + set_xlabel(labelx); + set_ylabel(labely); + set_zlabel(labelz); + + plot_xyz(x,y,z,title); +} + + +//------------------------------------------------------------------------------ +// +/// Plots a 2d graph from a list of doubles: x +// +template +Gnuplot& Gnuplot::plot_x(const X& x, const std::string &title) +{ + if (x.size() == 0) + { + throw GnuplotException("std::vector too small"); + return *this; + } + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << std::endl; + + tmp.flush(); + tmp.close(); + + + plotfile_x(name, 1, title); + + return *this; +} + +template +Gnuplot& Gnuplot::plot_x(const std::vector< X > &x, const std::vector &title) +{ + if (x.size() == 0) // no check + { + throw GnuplotException("std::vector too small"); + return *this; + } + + + + int column = 1; + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + + for (unsigned int k = 0; k < x.size(); k++){ + cmdstr << "\'-\' using " << column; + if (title.size() == 0 || title[k] == "") + cmdstr << " notitle "; + else + cmdstr << " title \"" << title[k] << "\" "; + + if(smooth == "") + cmdstr << "with " << pstyle; + else + cmdstr << "smooth " << smooth; + + if (k != x.size()-1) cmdstr << ","; + } + + cmdstr << "\n"; + for (unsigned int k = 0; k < x.size(); k++){ + typename X::const_iterator it; + it = x[k].begin(); + for (; it != x[k].end(); it++) + cmdstr << (*it) << std::endl; + cmdstr << "e" << std::endl; + } + + // + // Do the actual plot + // + cmd(cmdstr.str()); //nplots++; two_dim = true; already in cmd(); + + + + + return *this; +} + + +//------------------------------------------------------------------------------ +// +/// Plots a 2d graph from a list of doubles: x y +// +template +Gnuplot& Gnuplot::plot_xy(const X& x, const Y& y, const std::string &title) +{ + if (x.size() == 0 || y.size() == 0) + { + throw GnuplotException("std::vectors too small"); + return *this; + } + + if (x.size() != y.size()) + { + throw GnuplotException("Length of the std::vectors differs"); + return *this; + } + + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << " " << y[i] << std::endl; + + tmp.flush(); + tmp.close(); + + + plotfile_xy(name, 1, 2, title); + + return *this; +} + +///----------------------------------------------------------------------------- +/// +/// plot x,y pairs with dy errorbars +/// +template +Gnuplot& Gnuplot::plot_xy_err(const X &x, + const Y &y, + const E &dy, + const std::string &title) +{ + if (x.size() == 0 || y.size() == 0 || dy.size() == 0) + { + throw GnuplotException("std::vectors too small"); + return *this; + } + + if (x.size() != y.size() || y.size() != dy.size()) + { + throw GnuplotException("Length of the std::vectors differs"); + return *this; + } + + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << " " << y[i] << " " << dy[i] << std::endl; + + tmp.flush(); + tmp.close(); + + + // Do the actual plot + plotfile_xy_err(name, 1, 2, 3, title); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 3d graph from a list of doubles: x y z +// +template +Gnuplot& Gnuplot::plot_xyz(const X &x, + const Y &y, + const Z &z, + const std::string &title) +{ + if (x.size() == 0 || y.size() == 0 || z.size() == 0) + { + throw GnuplotException("std::vectors too small"); + return *this; + } + + if (x.size() != y.size() || x.size() != z.size()) + { + throw GnuplotException("Length of the std::vectors differs"); + return *this; + } + + + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + for (unsigned int i = 0; i < x.size(); i++) + tmp << x[i] << " " << y[i] << " " << z[i] < +void stringtok (Container &container, + std::string const &in, + const char * const delimiters = " \t\n") +{ + const std::string::size_type len = in.length(); + std::string::size_type i = 0; + + while ( i < len ) + { + // eat leading whitespace + i = in.find_first_not_of (delimiters, i); + + if (i == std::string::npos) + return; // nothing left but white space + + // find the end of the token + std::string::size_type j = in.find_first_of (delimiters, i); + + // push token + if (j == std::string::npos) + { + container.push_back (in.substr(i)); + return; + } + else + container.push_back (in.substr(i, j-i)); + + // set up for next loop + i = j + 1; + } + + return; +} + + +//------------------------------------------------------------------------------ +// +// Destructor: needed to delete temporary files +// +Gnuplot::~Gnuplot() +{ +// remove_tmpfiles(); + + // A stream opened by popen() should be closed by pclose() +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if (_pclose(gnucmd) == -1) +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if (pclose(gnucmd) == -1) +#endif + throw GnuplotException("Problem closing communication to gnuplot"); +} + + +//------------------------------------------------------------------------------ +// +// Resets a gnuplot session (next plot will erase previous ones) +// +Gnuplot& Gnuplot::reset_plot() +{ +// remove_tmpfiles(); + + nplots = 0; + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// resets a gnuplot session and sets all varibles to default +// +Gnuplot& Gnuplot::reset_all() +{ +// remove_tmpfiles(); + + nplots = 0; + cmd("reset"); + cmd("clear"); + pstyle = "points"; + smooth = ""; + showonscreen(); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Change the plotting style of a gnuplot session +// +Gnuplot& Gnuplot::set_style(const std::string &stylestr) +{ + if (stylestr.find("lines") == std::string::npos && + stylestr.find("points") == std::string::npos && + stylestr.find("linespoints") == std::string::npos && + stylestr.find("impulses") == std::string::npos && + stylestr.find("dots") == std::string::npos && + stylestr.find("steps") == std::string::npos && + stylestr.find("fsteps") == std::string::npos && + stylestr.find("histeps") == std::string::npos && + stylestr.find("boxes") == std::string::npos && // 1-4 columns of data are required + stylestr.find("filledcurves") == std::string::npos && + stylestr.find("histograms") == std::string::npos ) //only for one data column +// stylestr.find("labels") == std::string::npos && // 3 columns of data are required +// stylestr.find("xerrorbars") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("xerrorlines") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("errorbars") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("errorlines") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("yerrorbars") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("yerrorlines") == std::string::npos && // 3-4 columns of data are required +// stylestr.find("boxerrorbars") == std::string::npos && // 3-5 columns of data are required +// stylestr.find("xyerrorbars") == std::string::npos && // 4,6,7 columns of data are required +// stylestr.find("xyerrorlines") == std::string::npos && // 4,6,7 columns of data are required +// stylestr.find("boxxyerrorbars") == std::string::npos && // 4,6,7 columns of data are required +// stylestr.find("financebars") == std::string::npos && // 5 columns of data are required +// stylestr.find("candlesticks") == std::string::npos && // 5 columns of data are required +// stylestr.find("vectors") == std::string::npos && +// stylestr.find("image") == std::string::npos && +// stylestr.find("rgbimage") == std::string::npos && +// stylestr.find("pm3d") == std::string::npos ) + { + pstyle = std::string("points"); + } + else + { + pstyle = stylestr; + } + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// smooth: interpolation and approximation of data +// +Gnuplot& Gnuplot::set_smooth(const std::string &stylestr) +{ + if (stylestr.find("unique") == std::string::npos && + stylestr.find("frequency") == std::string::npos && + stylestr.find("csplines") == std::string::npos && + stylestr.find("acsplines") == std::string::npos && + stylestr.find("bezier") == std::string::npos && + stylestr.find("sbezier") == std::string::npos ) + { + smooth = ""; + } + else + { + smooth = stylestr; + } + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// sets terminal type to windows / x11 +// +Gnuplot& Gnuplot::showonscreen() +{ + cmd("set output"); + cmd("set terminal " + Gnuplot::terminal_std); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// saves a gnuplot session to a postscript file +// +Gnuplot& Gnuplot::savetofigure(const std::string filename, + const std::string terminal) +{ + std::ostringstream cmdstr; + cmdstr << "set terminal " << terminal; + cmd(cmdstr.str() ); + + cmdstr.str(""); // Clear cmdstr + cmdstr << "set output \"" << filename << "\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// Switches legend on +// +Gnuplot& Gnuplot::set_legend(const std::string &position) +{ + std::ostringstream cmdstr; + cmdstr << "set key " << position; + + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// turns on log scaling for the x axis +// +Gnuplot& Gnuplot::set_xlogscale(const double base) +{ + std::ostringstream cmdstr; + + cmdstr << "set logscale x " << base; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// turns on log scaling for the y axis +// +Gnuplot& Gnuplot::set_ylogscale(const double base) +{ + std::ostringstream cmdstr; + + cmdstr << "set logscale y " << base; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// turns on log scaling for the z axis +// +Gnuplot& Gnuplot::set_zlogscale(const double base) +{ + std::ostringstream cmdstr; + + cmdstr << "set logscale z " << base; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// scales the size of the points used in plots +// +Gnuplot& Gnuplot::set_pointsize(const double pointsize) +{ + std::ostringstream cmdstr; + cmdstr << "set pointsize " << pointsize; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set isoline density (grid) for plotting functions as surfaces +// +Gnuplot& Gnuplot::set_samples(const int samples) +{ + std::ostringstream cmdstr; + cmdstr << "set samples " << samples; + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// set isoline density (grid) for plotting functions as surfaces +// +Gnuplot& Gnuplot::set_isosamples(const int isolines) +{ + std::ostringstream cmdstr; + cmdstr << "set isosamples " << isolines; + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// enables contour drawing for surfaces set contour {base | surface | both} +// + +Gnuplot& Gnuplot::set_contour(const std::string &position) +{ + if (position.find("base") == std::string::npos && + position.find("surface") == std::string::npos && + position.find("both") == std::string::npos ) + { + cmd("set contour base"); + } + else + { + cmd("set contour " + position); + } + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set labels +// +// set the xlabel +Gnuplot& Gnuplot::set_xlabel(const std::string &label) +{ + std::ostringstream cmdstr; + + cmdstr << "set xlabel \"" << label << "\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the ylabel +// +Gnuplot& Gnuplot::set_ylabel(const std::string &label) +{ + std::ostringstream cmdstr; + + cmdstr << "set ylabel \"" << label << "\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the zlabel +// +Gnuplot& Gnuplot::set_zlabel(const std::string &label) +{ + std::ostringstream cmdstr; + + cmdstr << "set zlabel \"" << label << "\""; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set range +// +// set the xrange +Gnuplot& Gnuplot::set_xrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set xrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the yrange +// +Gnuplot& Gnuplot::set_yrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set yrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// set the zrange +// +Gnuplot& Gnuplot::set_zrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set zrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// set the palette range +// +Gnuplot& Gnuplot::set_cbrange(const double iFrom, + const double iTo) +{ + std::ostringstream cmdstr; + + cmdstr << "set cbrange[" << iFrom << ":" << iTo << "]"; + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// Plots a linear equation y=ax+b (where you supply the +// slope a and intercept b) +// +Gnuplot& Gnuplot::plot_slope(const double a, + const double b, + const std::string &title) +{ + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << a << " * x + " << b << " title \""; + + if (title == "") + cmdstr << "f(x) = " << a << " * x + " << b; + else + cmdstr << title; + + cmdstr << "\" with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// Plot an equation supplied as a std::string y=f(x) (only f(x) expected) +// +Gnuplot& Gnuplot::plot_equation(const std::string &equation, + const std::string &title) +{ + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << equation; + + if (title == "") + cmdstr << " notitle"; + else + cmdstr << " title \"" << title << "\""; + + cmdstr << " with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + +//------------------------------------------------------------------------------ +// +// plot an equation supplied as a std::string y=(x) +// +Gnuplot& Gnuplot::plot_equation3d(const std::string &equation, + const std::string &title) +{ + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == false) + cmdstr << "replot "; + else + cmdstr << "splot "; + + cmdstr << equation << " title \""; + + if (title == "") + cmdstr << "f(x,y) = " << equation; + else + cmdstr << title; + + cmdstr << "\" with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 2d graph from a list of doubles (x) saved in a file +// +Gnuplot& Gnuplot::plotfile_x(const std::string &filename, + const unsigned int column, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << "\"" << filename << "\" using " << column; + + if (title == "") + cmdstr << " notitle "; + else + cmdstr << " title \"" << title << "\" "; + + if(smooth == "") + cmdstr << "with " << pstyle; + else + cmdstr << "smooth " << smooth; + + // + // Do the actual plot + // + cmd(cmdstr.str()); //nplots++; two_dim = true; already in cmd(); + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +// Plots a 2d graph from a list of doubles (x y) saved in a file +// +Gnuplot& Gnuplot::plotfile_xy(const std::string &filename, + const unsigned int column_x, + const unsigned int column_y, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << "\"" << filename << "\" using " << column_x << ":" << column_y; + + if (title == "") + cmdstr << " notitle "; + else + cmdstr << " title \"" << title << "\" "; + + if(smooth == "") + cmdstr << "with " << pstyle; + else + cmdstr << "smooth " << smooth; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 2d graph with errorbars from a list of doubles (x y dy) in a file +// +Gnuplot& Gnuplot::plotfile_xy_err(const std::string &filename, + const unsigned int column_x, + const unsigned int column_y, + const unsigned int column_dy, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + cmdstr << "\"" << filename << "\" using " + << column_x << ":" << column_y << ":" << column_dy + << " with errorbars "; + + if (title == "") + cmdstr << " notitle "; + else + cmdstr << " title \"" << title << "\" "; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + +//------------------------------------------------------------------------------ +// +// Plots a 3d graph from a list of doubles (x y z) saved in a file +// +Gnuplot& Gnuplot::plotfile_xyz(const std::string &filename, + const unsigned int column_x, + const unsigned int column_y, + const unsigned int column_z, + const std::string &title) +{ + // + // check if file exists + // + file_available(filename); + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == false) + cmdstr << "replot "; + else + cmdstr << "splot "; + + cmdstr << "\"" << filename << "\" using " << column_x << ":" << column_y + << ":" << column_z; + + if (title == "") + cmdstr << " notitle with " << pstyle; + else + cmdstr << " title \"" << title << "\" with " << pstyle; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +/// * note that this function is not valid for versions of GNUPlot below 4.2 +// +Gnuplot& Gnuplot::plot_image(const unsigned char * ucPicBuf, + const unsigned int iWidth, + const unsigned int iHeight, + const std::string &title) +{ + std::ofstream tmp; + std::string name = create_tmpfile(tmp); + if (name == "") + return *this; + + // + // write the data to file + // + int iIndex = 0; + for(unsigned int iRow = 0; iRow < iHeight; iRow++) + { + for(unsigned int iColumn = 0; iColumn < iWidth; iColumn++) + { + tmp << iColumn << " " << iRow << " " + << static_cast(ucPicBuf[iIndex++]) << std::endl; + } + } + + tmp.flush(); + tmp.close(); + + + std::ostringstream cmdstr; + // + // command to be sent to gnuplot + // + if (nplots > 0 && two_dim == true) + cmdstr << "replot "; + else + cmdstr << "plot "; + + if (title == "") + cmdstr << "\"" << name << "\" with image"; + else + cmdstr << "\"" << name << "\" title \"" << title << "\" with image"; + + // + // Do the actual plot + // + cmd(cmdstr.str()); + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +// Sends a command to an active gnuplot session +// +Gnuplot& Gnuplot::cmd(const std::string &cmdstr) +{ + if( !(valid) ) + { + return *this; + } + + + // int fputs ( const char * str, FILE * stream ); + // writes the string str to the stream. + // The function begins copying from the address specified (str) until it + // reaches the terminating null character ('\0'). This final + // null-character is not copied to the stream. + fputs( (cmdstr+"\n").c_str(), gnucmd ); + + // int fflush ( FILE * stream ); + // If the given stream was open for writing and the last i/o operation was + // an output operation, any unwritten data in the output buffer is written + // to the file. If the argument is a null pointer, all open files are + // flushed. The stream remains open after this call. + fflush(gnucmd); + + + if( cmdstr.find("replot") != std::string::npos ) + { + return *this; + } + else if( cmdstr.find("splot") != std::string::npos ) + { + two_dim = false; + nplots++; + } + else if( cmdstr.find("plot") != std::string::npos ) + { + two_dim = true; + nplots++; + } + + return *this; +} + + + +//------------------------------------------------------------------------------ +// +// Opens up a gnuplot session, ready to receive commands +// +void Gnuplot::init() +{ + // char * getenv ( const char * name ); get value of environment variable + // Retrieves a C string containing the value of the environment variable + // whose name is specified as argument. If the requested variable is not + // part of the environment list, the function returns a NULL pointer. +#if ( defined(unix) || defined(__unix) || defined(__unix__) ) && !defined(__APPLE__) + if (getenv("DISPLAY") == NULL) + { + valid = false; + throw GnuplotException("Can't find DISPLAY variable"); + } +#endif + + + // if gnuplot not available + if (!Gnuplot::get_program_path()) + { + valid = false; + throw GnuplotException("Can't find gnuplot"); + } + + + // + // open pipe + // + std::string tmp = Gnuplot::m_sGNUPlotPath + "/" + + Gnuplot::m_sGNUPlotFileName; + + // FILE *popen(const char *command, const char *mode); + // The popen() function shall execute the command specified by the string + // command, create a pipe between the calling program and the executed + // command, and return a pointer to a stream that can be used to either read + // from or write to the pipe. +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + gnucmd = _popen(tmp.c_str(),"w"); +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + gnucmd = popen(tmp.c_str(),"w"); +#endif + + // popen() shall return a pointer to an open stream that can be used to read + // or write to the pipe. Otherwise, it shall return a null pointer and may + // set errno to indicate the error. + if (!gnucmd) + { + valid = false; + throw GnuplotException("Couldn't open connection to gnuplot"); + } + + nplots = 0; + valid = true; + smooth = ""; + + //set terminal type + showonscreen(); + + return; +} + + +//------------------------------------------------------------------------------ +// +// Find out if a command lives in m_sGNUPlotPath or in PATH +// +bool Gnuplot::get_program_path() +{ + // + // first look in m_sGNUPlotPath for Gnuplot + // + std::string tmp = Gnuplot::m_sGNUPlotPath + "/" + + Gnuplot::m_sGNUPlotFileName; + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if ( Gnuplot::file_exists(tmp,0) ) // check existence +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if ( Gnuplot::file_exists(tmp,1) ) // check existence and execution permission +#endif + { + return true; + } + + + // + // second look in PATH for Gnuplot + // + char *path; + // Retrieves a C string containing the value of environment variable PATH + path = getenv("PATH"); + + + if (path == NULL) + { + throw GnuplotException("Path is not set"); + return false; + } + else + { + std::list ls; + + //split path (one long string) into list ls of strings +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + stringtok(ls,path,";"); +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + stringtok(ls,path,":"); +#endif + + // scan list for Gnuplot program files + for (std::list::const_iterator i = ls.begin(); + i != ls.end(); ++i) + { + tmp = (*i) + "/" + Gnuplot::m_sGNUPlotFileName; +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if ( Gnuplot::file_exists(tmp,0) ) // check existence +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if ( Gnuplot::file_exists(tmp,1) ) // check existence and execution permission +#endif + { + Gnuplot::m_sGNUPlotPath = *i; // set m_sGNUPlotPath + return true; + } + } + + tmp = "Can't find gnuplot neither in PATH nor in \"" + + Gnuplot::m_sGNUPlotPath + "\""; + throw GnuplotException(tmp); + } +} + + + +//------------------------------------------------------------------------------ +// +// check if file exists +// +bool Gnuplot::file_exists(const std::string &filename, int mode) +{ + if ( mode < 0 || mode > 7) + { + throw std::runtime_error("In function \"Gnuplot::file_exists\": mode\ + has to be an integer between 0 and 7"); + return false; + } + + // int _access(const char *path, int mode); + // returns 0 if the file has the given mode, + // it returns -1 if the named file does not exist or is not accessible in + // the given mode + // mode = 0 (F_OK) (default): checks file for existence only + // mode = 1 (X_OK): execution permission + // mode = 2 (W_OK): write permission + // mode = 4 (R_OK): read permission + // mode = 6 : read and write permission + // mode = 7 : read, write and execution permission +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if (_access(filename.c_str(), mode) == 0) +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if (access(filename.c_str(), mode) == 0) +#endif + { + return true; + } + else + { + return false; + } + +} + +bool Gnuplot::file_available(const std::string &filename) +{ + std::ostringstream except; + if( Gnuplot::file_exists(filename,0) ) // check existence + { + if( !(Gnuplot::file_exists(filename,4)) ) // check read permission + { + except << "No read permission for File \"" << filename << "\""; + throw GnuplotException( except.str() ); + return false; + } + } + else + { + except << "File \"" << filename << "\" does not exist"; + throw GnuplotException( except.str() ); + return false; + } + return false; +} + + + +//------------------------------------------------------------------------------ +// +// Opens a temporary file +// +std::string Gnuplot::create_tmpfile(std::ofstream &tmp) +{ + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + char name[] = "gnuplotiXXXXXX"; //tmp file in working directory +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + char name[] = "/tmp/gnuplotiXXXXXX"; // tmp file in /tmp +#endif + + // + // check if maximum number of temporary files reached + // + if (Gnuplot::tmpfile_num == GP_MAX_TMP_FILES - 1) + { + std::ostringstream except; + except << "Maximum number of temporary files reached (" + << GP_MAX_TMP_FILES << "): cannot open more files" << std::endl; + + throw GnuplotException( except.str() ); + } + + // int mkstemp(char *name); + // shall replace the contents of the string pointed to by "name" by a unique + // filename, and return a file descriptor for the file open for reading and + // writing. Otherwise, -1 shall be returned if no suitable file could be + // created. The string in template should look like a filename with six + // trailing 'X' s; mkstemp() replaces each 'X' with a character from the + // portable filename character set. The characters are chosen such that the + // resulting name does not duplicate the name of an existing file at the + // time of a call to mkstemp() + + + // + // open temporary files for output + // +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__TOS_WIN__) + if (_mktemp(name) == NULL) +#elif defined(unix) || defined(__unix) || defined(__unix__) || defined(__APPLE__) + if (mkstemp(name) == -1) +#endif + { + std::ostringstream except; + except << "Cannot create temporary file \"" << name << "\""; + throw GnuplotException(except.str()); + } + + tmp.open(name); + if (tmp.bad()) + { + std::ostringstream except; + except << "Cannot create temporary file \"" << name << "\""; + throw GnuplotException(except.str()); + } + + // + // Save the temporary filename + // + tmpfile_list.push_back(name); + Gnuplot::tmpfile_num++; + + return name; +} + +void Gnuplot::remove_tmpfiles() +{ + if ((tmpfile_list).size() > 0) + { + for (unsigned int i = 0; i < tmpfile_list.size(); i++) + { + + if( remove( tmpfile_list[i].c_str() ) != 0 ) + { + std::ostringstream except; + except << "Cannot remove temporary file \"" << tmpfile_list[i] << "\""; + throw GnuplotException(except.str()); + } + } + + Gnuplot::tmpfile_num -= static_cast(tmpfile_list.size()); + } +} +#endif \ No newline at end of file