Commit acfc9db0515559cdcc56104ba1ec2082b09b0b8f

Authored by Jay Berkenbilt
1 parent d16308b3

QPDFJob: switch to C++11-style field initializers

include/qpdf/QPDFJob.hh
@@ -586,135 +586,142 @@ class QPDFJob @@ -586,135 +586,142 @@ class QPDFJob
586 ~Members() = default; 586 ~Members() = default;
587 587
588 private: 588 private:
  589 + // These default values are duplicated in help and docs.
  590 + static int constexpr DEFAULT_KEEP_FILES_OPEN_THRESHOLD = 200;
  591 + static int constexpr DEFAULT_OI_MIN_WIDTH = 128;
  592 + static int constexpr DEFAULT_OI_MIN_HEIGHT = 128;
  593 + static int constexpr DEFAULT_OI_MIN_AREA = 16384;
  594 + static int constexpr DEFAULT_II_MIN_BYTES = 1024;
  595 +
589 Members(); 596 Members();
590 Members(Members const&) = delete; 597 Members(Members const&) = delete;
591 598
592 std::shared_ptr<QPDFLogger> log; 599 std::shared_ptr<QPDFLogger> log;
593 - std::string message_prefix;  
594 - bool warnings;  
595 - unsigned long encryption_status;  
596 - bool verbose; 600 + std::string message_prefix{"qpdf"};
  601 + bool warnings{false};
  602 + unsigned long encryption_status{0};
  603 + bool verbose{false};
597 std::shared_ptr<char> password; 604 std::shared_ptr<char> password;
598 - bool linearize;  
599 - bool decrypt;  
600 - int split_pages;  
601 - bool progress;  
602 - std::function<void(int)> progress_handler;  
603 - bool suppress_warnings;  
604 - bool warnings_exit_zero;  
605 - bool copy_encryption; 605 + bool linearize{false};
  606 + bool decrypt{false};
  607 + int split_pages{0};
  608 + bool progress{false};
  609 + std::function<void(int)> progress_handler{nullptr};
  610 + bool suppress_warnings{false};
  611 + bool warnings_exit_zero{false};
  612 + bool copy_encryption{false};
606 std::string encryption_file; 613 std::string encryption_file;
607 std::shared_ptr<char> encryption_file_password; 614 std::shared_ptr<char> encryption_file_password;
608 - bool encrypt;  
609 - bool password_is_hex_key;  
610 - bool suppress_password_recovery;  
611 - password_mode_e password_mode;  
612 - bool allow_insecure;  
613 - bool allow_weak_crypto; 615 + bool encrypt{false};
  616 + bool password_is_hex_key{false};
  617 + bool suppress_password_recovery{false};
  618 + password_mode_e password_mode{pm_auto};
  619 + bool allow_insecure{false};
  620 + bool allow_weak_crypto{false};
614 std::string user_password; 621 std::string user_password;
615 std::string owner_password; 622 std::string owner_password;
616 - int keylen;  
617 - bool r2_print;  
618 - bool r2_modify;  
619 - bool r2_extract;  
620 - bool r2_annotate;  
621 - bool r3_accessibility;  
622 - bool r3_extract;  
623 - bool r3_assemble;  
624 - bool r3_annotate_and_form;  
625 - bool r3_form_filling;  
626 - bool r3_modify_other;  
627 - qpdf_r3_print_e r3_print;  
628 - bool force_V4;  
629 - bool force_R5;  
630 - bool cleartext_metadata;  
631 - bool use_aes;  
632 - bool stream_data_set;  
633 - qpdf_stream_data_e stream_data_mode;  
634 - bool compress_streams;  
635 - bool compress_streams_set;  
636 - bool recompress_flate;  
637 - bool recompress_flate_set;  
638 - int compression_level;  
639 - qpdf_stream_decode_level_e decode_level;  
640 - bool decode_level_set;  
641 - bool normalize_set;  
642 - bool normalize;  
643 - bool suppress_recovery;  
644 - bool object_stream_set;  
645 - qpdf_object_stream_e object_stream_mode;  
646 - bool ignore_xref_streams;  
647 - bool qdf_mode;  
648 - bool preserve_unreferenced_objects;  
649 - remove_unref_e remove_unreferenced_page_resources;  
650 - bool keep_files_open;  
651 - bool keep_files_open_set;  
652 - size_t keep_files_open_threshold;  
653 - bool newline_before_endstream; 623 + int keylen{0};
  624 + bool r2_print{true};
  625 + bool r2_modify{true};
  626 + bool r2_extract{true};
  627 + bool r2_annotate{true};
  628 + bool r3_accessibility{true};
  629 + bool r3_extract{true};
  630 + bool r3_assemble{true};
  631 + bool r3_annotate_and_form{true};
  632 + bool r3_form_filling{true};
  633 + bool r3_modify_other{true};
  634 + qpdf_r3_print_e r3_print{qpdf_r3p_full};
  635 + bool force_V4{false};
  636 + bool force_R5{false};
  637 + bool cleartext_metadata{false};
  638 + bool use_aes{false};
  639 + bool stream_data_set{false};
  640 + qpdf_stream_data_e stream_data_mode{qpdf_s_compress};
  641 + bool compress_streams{true};
  642 + bool compress_streams_set{false};
  643 + bool recompress_flate{false};
  644 + bool recompress_flate_set{false};
  645 + int compression_level{-1};
  646 + qpdf_stream_decode_level_e decode_level{qpdf_dl_generalized};
  647 + bool decode_level_set{false};
  648 + bool normalize_set{false};
  649 + bool normalize{false};
  650 + bool suppress_recovery{false};
  651 + bool object_stream_set{false};
  652 + qpdf_object_stream_e object_stream_mode{qpdf_o_preserve};
  653 + bool ignore_xref_streams{false};
  654 + bool qdf_mode{false};
  655 + bool preserve_unreferenced_objects{false};
  656 + remove_unref_e remove_unreferenced_page_resources{re_auto};
  657 + bool keep_files_open{true};
  658 + bool keep_files_open_set{false};
  659 + size_t keep_files_open_threshold{DEFAULT_KEEP_FILES_OPEN_THRESHOLD};
  660 + bool newline_before_endstream{false};
654 std::string linearize_pass1; 661 std::string linearize_pass1;
655 - bool coalesce_contents;  
656 - bool flatten_annotations;  
657 - int flatten_annotations_required;  
658 - int flatten_annotations_forbidden;  
659 - bool generate_appearances; 662 + bool coalesce_contents{false};
  663 + bool flatten_annotations{false};
  664 + int flatten_annotations_required{0};
  665 + int flatten_annotations_forbidden{an_invisible | an_hidden};
  666 + bool generate_appearances{false};
660 PDFVersion max_input_version; 667 PDFVersion max_input_version;
661 std::string min_version; 668 std::string min_version;
662 std::string force_version; 669 std::string force_version;
663 - bool show_npages;  
664 - bool deterministic_id;  
665 - bool static_id;  
666 - bool static_aes_iv;  
667 - bool suppress_original_object_id;  
668 - bool show_encryption;  
669 - bool show_encryption_key;  
670 - bool check_linearization;  
671 - bool show_linearization;  
672 - bool show_xref;  
673 - bool show_trailer;  
674 - int show_obj;  
675 - int show_gen;  
676 - bool show_raw_stream_data;  
677 - bool show_filtered_stream_data;  
678 - bool show_pages;  
679 - bool show_page_images;  
680 - size_t collate;  
681 - bool flatten_rotation;  
682 - bool list_attachments; 670 + bool show_npages{false};
  671 + bool deterministic_id{false};
  672 + bool static_id{false};
  673 + bool static_aes_iv{false};
  674 + bool suppress_original_object_id{false};
  675 + bool show_encryption{false};
  676 + bool show_encryption_key{false};
  677 + bool check_linearization{false};
  678 + bool show_linearization{false};
  679 + bool show_xref{false};
  680 + bool show_trailer{false};
  681 + int show_obj{0};
  682 + int show_gen{0};
  683 + bool show_raw_stream_data{false};
  684 + bool show_filtered_stream_data{false};
  685 + bool show_pages{false};
  686 + bool show_page_images{false};
  687 + size_t collate{0};
  688 + bool flatten_rotation{false};
  689 + bool list_attachments{false};
683 std::string attachment_to_show; 690 std::string attachment_to_show;
684 std::list<std::string> attachments_to_remove; 691 std::list<std::string> attachments_to_remove;
685 std::list<AddAttachment> attachments_to_add; 692 std::list<AddAttachment> attachments_to_add;
686 std::list<CopyAttachmentFrom> attachments_to_copy; 693 std::list<CopyAttachmentFrom> attachments_to_copy;
687 - int json_version; 694 + int json_version{0};
688 std::set<std::string> json_keys; 695 std::set<std::string> json_keys;
689 std::set<std::string> json_objects; 696 std::set<std::string> json_objects;
690 - qpdf_json_stream_data_e json_stream_data;  
691 - bool json_stream_data_set; 697 + qpdf_json_stream_data_e json_stream_data{qpdf_sj_none};
  698 + bool json_stream_data_set{false};
692 std::string json_stream_prefix; 699 std::string json_stream_prefix;
693 - bool test_json_schema;  
694 - bool check;  
695 - bool optimize_images;  
696 - bool externalize_inline_images;  
697 - bool keep_inline_images;  
698 - bool remove_page_labels;  
699 - size_t oi_min_width;  
700 - size_t oi_min_height;  
701 - size_t oi_min_area;  
702 - size_t ii_min_bytes;  
703 - UnderOverlay underlay;  
704 - UnderOverlay overlay;  
705 - UnderOverlay* under_overlay; 700 + bool test_json_schema{false};
  701 + bool check{false};
  702 + bool optimize_images{false};
  703 + bool externalize_inline_images{false};
  704 + bool keep_inline_images{false};
  705 + bool remove_page_labels{false};
  706 + size_t oi_min_width{DEFAULT_OI_MIN_WIDTH};
  707 + size_t oi_min_height{DEFAULT_OI_MIN_HEIGHT};
  708 + size_t oi_min_area{DEFAULT_OI_MIN_AREA};
  709 + size_t ii_min_bytes{DEFAULT_II_MIN_BYTES};
  710 + UnderOverlay underlay{"underlay"};
  711 + UnderOverlay overlay{"overlay"};
  712 + UnderOverlay* under_overlay{nullptr};
706 std::vector<PageSpec> page_specs; 713 std::vector<PageSpec> page_specs;
707 std::map<std::string, RotationSpec> rotations; 714 std::map<std::string, RotationSpec> rotations;
708 - bool require_outfile;  
709 - bool replace_input;  
710 - bool check_is_encrypted;  
711 - bool check_requires_password; 715 + bool require_outfile{true};
  716 + bool replace_input{false};
  717 + bool check_is_encrypted{false};
  718 + bool check_requires_password{false};
712 std::shared_ptr<char> infilename; 719 std::shared_ptr<char> infilename;
713 std::shared_ptr<char> outfilename; 720 std::shared_ptr<char> outfilename;
714 - bool json_input;  
715 - bool json_output; 721 + bool json_input{false};
  722 + bool json_output{false};
716 std::string update_from_json; 723 std::string update_from_json;
717 - bool report_mem_usage; 724 + bool report_mem_usage{false};
718 }; 725 };
719 std::shared_ptr<Members> m; 726 std::shared_ptr<Members> m;
720 }; 727 };
libqpdf/QPDFJob.cc
@@ -304,121 +304,8 @@ ProgressReporter::reportProgress(int percentage) @@ -304,121 +304,8 @@ ProgressReporter::reportProgress(int percentage)
304 << "%\n"; 304 << "%\n";
305 } 305 }
306 306
307 -// These default values are duplicated in help and docs.  
308 -static int constexpr DEFAULT_KEEP_FILES_OPEN_THRESHOLD = 200;  
309 -static int constexpr DEFAULT_OI_MIN_WIDTH = 128;  
310 -static int constexpr DEFAULT_OI_MIN_HEIGHT = 128;  
311 -static int constexpr DEFAULT_OI_MIN_AREA = 16384;  
312 -static int constexpr DEFAULT_II_MIN_BYTES = 1024;  
313 -  
314 QPDFJob::Members::Members() : 307 QPDFJob::Members::Members() :
315 - log(QPDFLogger::defaultLogger()),  
316 - message_prefix("qpdf"),  
317 - warnings(false),  
318 - encryption_status(0),  
319 - verbose(false),  
320 - password(nullptr),  
321 - linearize(false),  
322 - decrypt(false),  
323 - split_pages(0),  
324 - progress(false),  
325 - progress_handler(nullptr),  
326 - suppress_warnings(false),  
327 - warnings_exit_zero(false),  
328 - copy_encryption(false),  
329 - encryption_file_password(nullptr),  
330 - encrypt(false),  
331 - password_is_hex_key(false),  
332 - suppress_password_recovery(false),  
333 - password_mode(pm_auto),  
334 - allow_insecure(false),  
335 - allow_weak_crypto(false),  
336 - keylen(0),  
337 - r2_print(true),  
338 - r2_modify(true),  
339 - r2_extract(true),  
340 - r2_annotate(true),  
341 - r3_accessibility(true),  
342 - r3_extract(true),  
343 - r3_assemble(true),  
344 - r3_annotate_and_form(true),  
345 - r3_form_filling(true),  
346 - r3_modify_other(true),  
347 - r3_print(qpdf_r3p_full),  
348 - force_V4(false),  
349 - force_R5(false),  
350 - cleartext_metadata(false),  
351 - use_aes(false),  
352 - stream_data_set(false),  
353 - stream_data_mode(qpdf_s_compress),  
354 - compress_streams(true),  
355 - compress_streams_set(false),  
356 - recompress_flate(false),  
357 - recompress_flate_set(false),  
358 - compression_level(-1),  
359 - decode_level(qpdf_dl_generalized),  
360 - decode_level_set(false),  
361 - normalize_set(false),  
362 - normalize(false),  
363 - suppress_recovery(false),  
364 - object_stream_set(false),  
365 - object_stream_mode(qpdf_o_preserve),  
366 - ignore_xref_streams(false),  
367 - qdf_mode(false),  
368 - preserve_unreferenced_objects(false),  
369 - remove_unreferenced_page_resources(re_auto),  
370 - keep_files_open(true),  
371 - keep_files_open_set(false),  
372 - keep_files_open_threshold(DEFAULT_KEEP_FILES_OPEN_THRESHOLD),  
373 - newline_before_endstream(false),  
374 - coalesce_contents(false),  
375 - flatten_annotations(false),  
376 - flatten_annotations_required(0),  
377 - flatten_annotations_forbidden(an_invisible | an_hidden),  
378 - generate_appearances(false),  
379 - show_npages(false),  
380 - deterministic_id(false),  
381 - static_id(false),  
382 - static_aes_iv(false),  
383 - suppress_original_object_id(false),  
384 - show_encryption(false),  
385 - show_encryption_key(false),  
386 - check_linearization(false),  
387 - show_linearization(false),  
388 - show_xref(false),  
389 - show_trailer(false),  
390 - show_obj(0),  
391 - show_gen(0),  
392 - show_raw_stream_data(false),  
393 - show_filtered_stream_data(false),  
394 - show_pages(false),  
395 - show_page_images(false),  
396 - collate(0),  
397 - flatten_rotation(false),  
398 - list_attachments(false),  
399 - json_version(0),  
400 - json_stream_data(qpdf_sj_none),  
401 - json_stream_data_set(false),  
402 - test_json_schema(false),  
403 - check(false),  
404 - optimize_images(false),  
405 - externalize_inline_images(false),  
406 - keep_inline_images(false),  
407 - remove_page_labels(false),  
408 - oi_min_width(DEFAULT_OI_MIN_WIDTH),  
409 - oi_min_height(DEFAULT_OI_MIN_HEIGHT),  
410 - oi_min_area(DEFAULT_OI_MIN_AREA),  
411 - ii_min_bytes(DEFAULT_II_MIN_BYTES),  
412 - underlay("underlay"),  
413 - overlay("overlay"),  
414 - under_overlay(nullptr),  
415 - require_outfile(true),  
416 - replace_input(false),  
417 - check_is_encrypted(false),  
418 - check_requires_password(false),  
419 - json_input(false),  
420 - json_output(false),  
421 - report_mem_usage(false) 308 + log(QPDFLogger::defaultLogger())
422 { 309 {
423 } 310 }
424 311