1 // Copyright 2019 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef LIBIPP_IPP_COLLECTIONS_H_
6 #define LIBIPP_IPP_COLLECTIONS_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "ipp_attribute.h"  // NOLINT(build/include)
12 #include "ipp_enums.h"  // NOLINT(build/include)
13 #include "ipp_export.h"  // NOLINT(build/include)
14 #include "ipp_package.h"  // NOLINT(build/include)
15 
16 // This file contains definition of classes corresponding to supported IPP
17 // collection attributes. See ipp.h for more details.
18 // This file was generated from IPP schema based on the following sources:
19 // * [rfc8011]
20 // * [CUPS Implementation of IPP] at https://www.cups.org/doc/spec-ipp.html
21 // * [IPP registry] at https://www.pwg.org/ipp/ipp-registrations.xml
22 
23 namespace ipp {
24 struct IPP_EXPORT C_job_constraints_supported : public Collection {
25   SingleValue<StringWithLanguage> resolver_name{AttrName::resolver_name,
26                                                 AttrType::name};
27   std::vector<Attribute*> GetKnownAttributes() override;
28 };
29 struct IPP_EXPORT C_job_finishings_col_actual : public Collection {
30   struct C_media_size : public Collection {
31     SingleValue<int> x_dimension{AttrName::x_dimension, AttrType::integer};
32     SingleValue<int> y_dimension{AttrName::y_dimension, AttrType::integer};
33     std::vector<Attribute*> GetKnownAttributes() override;
34   };
35   SingleValue<E_media_back_coating> media_back_coating{
36       AttrName::media_back_coating, AttrType::keyword};
37   SingleValue<int> media_bottom_margin{AttrName::media_bottom_margin,
38                                        AttrType::integer};
39   SingleValue<E_media_color> media_color{AttrName::media_color,
40                                          AttrType::keyword};
41   SingleValue<E_media_front_coating> media_front_coating{
42       AttrName::media_front_coating, AttrType::keyword};
43   SingleValue<E_media_grain> media_grain{AttrName::media_grain,
44                                          AttrType::keyword};
45   SingleValue<int> media_hole_count{AttrName::media_hole_count,
46                                     AttrType::integer};
47   SingleValue<StringWithLanguage> media_info{AttrName::media_info,
48                                              AttrType::text};
49   SingleValue<E_media_key> media_key{AttrName::media_key, AttrType::keyword};
50   SingleValue<int> media_left_margin{AttrName::media_left_margin,
51                                      AttrType::integer};
52   SingleValue<int> media_order_count{AttrName::media_order_count,
53                                      AttrType::integer};
54   SingleValue<E_media_pre_printed> media_pre_printed{
55       AttrName::media_pre_printed, AttrType::keyword};
56   SingleValue<E_media_recycled> media_recycled{AttrName::media_recycled,
57                                                AttrType::keyword};
58   SingleValue<int> media_right_margin{AttrName::media_right_margin,
59                                       AttrType::integer};
60   SingleCollection<C_media_size> media_size{AttrName::media_size};
61   SingleValue<StringWithLanguage> media_size_name{AttrName::media_size_name,
62                                                   AttrType::name};
63   SingleValue<E_media_source> media_source{AttrName::media_source,
64                                            AttrType::keyword};
65   SingleValue<int> media_thickness{AttrName::media_thickness,
66                                    AttrType::integer};
67   SingleValue<E_media_tooth> media_tooth{AttrName::media_tooth,
68                                          AttrType::keyword};
69   SingleValue<int> media_top_margin{AttrName::media_top_margin,
70                                     AttrType::integer};
71   SingleValue<E_media_type> media_type{AttrName::media_type, AttrType::keyword};
72   SingleValue<int> media_weight_metric{AttrName::media_weight_metric,
73                                        AttrType::integer};
74   std::vector<Attribute*> GetKnownAttributes() override;
75 };
76 typedef C_job_constraints_supported C_job_resolvers_supported;
77 struct IPP_EXPORT C_job_save_disposition : public Collection {
78   struct C_save_info : public Collection {
79     SingleValue<std::string> save_document_format{
80         AttrName::save_document_format, AttrType::mimeMediaType};
81     SingleValue<std::string> save_location{AttrName::save_location,
82                                            AttrType::uri};
83     SingleValue<StringWithLanguage> save_name{AttrName::save_name,
84                                               AttrType::name};
85     std::vector<Attribute*> GetKnownAttributes() override;
86   };
87   SingleValue<E_save_disposition> save_disposition{AttrName::save_disposition,
88                                                    AttrType::keyword};
89   SetOfCollections<C_save_info> save_info{AttrName::save_info};
90   std::vector<Attribute*> GetKnownAttributes() override;
91 };
92 typedef C_job_finishings_col_actual C_media_col;
93 typedef C_job_finishings_col_actual C_media_col_actual;
94 struct IPP_EXPORT C_media_col_database : public Collection {
95   struct C_media_size : public Collection {
96     SingleValue<int> x_dimension{AttrName::x_dimension, AttrType::integer};
97     SingleValue<int> y_dimension{AttrName::y_dimension, AttrType::integer};
98     std::vector<Attribute*> GetKnownAttributes() override;
99   };
100   struct C_media_source_properties : public Collection {
101     SingleValue<E_media_source_feed_direction> media_source_feed_direction{
102         AttrName::media_source_feed_direction, AttrType::keyword};
103     SingleValue<E_media_source_feed_orientation> media_source_feed_orientation{
104         AttrName::media_source_feed_orientation, AttrType::enum_};
105     std::vector<Attribute*> GetKnownAttributes() override;
106   };
107   SingleValue<E_media_back_coating> media_back_coating{
108       AttrName::media_back_coating, AttrType::keyword};
109   SingleValue<int> media_bottom_margin{AttrName::media_bottom_margin,
110                                        AttrType::integer};
111   SingleValue<E_media_color> media_color{AttrName::media_color,
112                                          AttrType::keyword};
113   SingleValue<E_media_front_coating> media_front_coating{
114       AttrName::media_front_coating, AttrType::keyword};
115   SingleValue<E_media_grain> media_grain{AttrName::media_grain,
116                                          AttrType::keyword};
117   SingleValue<int> media_hole_count{AttrName::media_hole_count,
118                                     AttrType::integer};
119   SingleValue<StringWithLanguage> media_info{AttrName::media_info,
120                                              AttrType::text};
121   SingleValue<E_media_key> media_key{AttrName::media_key, AttrType::keyword};
122   SingleValue<int> media_left_margin{AttrName::media_left_margin,
123                                      AttrType::integer};
124   SingleValue<int> media_order_count{AttrName::media_order_count,
125                                      AttrType::integer};
126   SingleValue<E_media_pre_printed> media_pre_printed{
127       AttrName::media_pre_printed, AttrType::keyword};
128   SingleValue<E_media_recycled> media_recycled{AttrName::media_recycled,
129                                                AttrType::keyword};
130   SingleValue<int> media_right_margin{AttrName::media_right_margin,
131                                       AttrType::integer};
132   SingleCollection<C_media_size> media_size{AttrName::media_size};
133   SingleValue<StringWithLanguage> media_size_name{AttrName::media_size_name,
134                                                   AttrType::name};
135   SingleValue<E_media_source> media_source{AttrName::media_source,
136                                            AttrType::keyword};
137   SingleCollection<C_media_source_properties> media_source_properties{
138       AttrName::media_source_properties};
139   SingleValue<int> media_thickness{AttrName::media_thickness,
140                                    AttrType::integer};
141   SingleValue<E_media_tooth> media_tooth{AttrName::media_tooth,
142                                          AttrType::keyword};
143   SingleValue<int> media_top_margin{AttrName::media_top_margin,
144                                     AttrType::integer};
145   SingleValue<E_media_type> media_type{AttrName::media_type, AttrType::keyword};
146   SingleValue<int> media_weight_metric{AttrName::media_weight_metric,
147                                        AttrType::integer};
148   std::vector<Attribute*> GetKnownAttributes() override;
149 };
150 typedef C_job_finishings_col_actual C_media_col_default;
151 typedef C_media_col_database C_media_col_ready;
152 struct IPP_EXPORT C_media_size_supported : public Collection {
153   SingleValue<RangeOfInteger> x_dimension{AttrName::x_dimension,
154                                           AttrType::rangeOfInteger};
155   SingleValue<RangeOfInteger> y_dimension{AttrName::y_dimension,
156                                           AttrType::rangeOfInteger};
157   std::vector<Attribute*> GetKnownAttributes() override;
158 };
159 struct IPP_EXPORT C_pdl_init_file : public Collection {
160   SingleValue<StringWithLanguage> pdl_init_file_entry{
161       AttrName::pdl_init_file_entry, AttrType::name};
162   SingleValue<std::string> pdl_init_file_location{
163       AttrName::pdl_init_file_location, AttrType::uri};
164   SingleValue<StringWithLanguage> pdl_init_file_name{
165       AttrName::pdl_init_file_name, AttrType::name};
166   std::vector<Attribute*> GetKnownAttributes() override;
167 };
168 typedef C_pdl_init_file C_pdl_init_file_default;
169 struct IPP_EXPORT C_printer_contact_col : public Collection {
170   SingleValue<StringWithLanguage> contact_name{AttrName::contact_name,
171                                                AttrType::name};
172   SingleValue<std::string> contact_uri{AttrName::contact_uri, AttrType::uri};
173   SetOfValues<StringWithLanguage> contact_vcard{AttrName::contact_vcard,
174                                                 AttrType::text};
175   std::vector<Attribute*> GetKnownAttributes() override;
176 };
177 struct IPP_EXPORT C_printer_icc_profiles : public Collection {
178   SingleValue<StringWithLanguage> profile_name{AttrName::profile_name,
179                                                AttrType::name};
180   SingleValue<std::string> profile_url{AttrName::profile_url, AttrType::uri};
181   std::vector<Attribute*> GetKnownAttributes() override;
182 };
183 struct IPP_EXPORT C_printer_xri_supported : public Collection {
184   SingleValue<E_xri_authentication> xri_authentication{
185       AttrName::xri_authentication, AttrType::keyword};
186   SingleValue<E_xri_security> xri_security{AttrName::xri_security,
187                                            AttrType::keyword};
188   SingleValue<std::string> xri_uri{AttrName::xri_uri, AttrType::uri};
189   std::vector<Attribute*> GetKnownAttributes() override;
190 };
191 struct IPP_EXPORT C_proof_print : public Collection {
192   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
193   SingleCollection<C_media_col> media_col{AttrName::media_col};
194   SingleValue<int> proof_print_copies{AttrName::proof_print_copies,
195                                       AttrType::integer};
196   std::vector<Attribute*> GetKnownAttributes() override;
197 };
198 typedef C_proof_print C_proof_print_default;
199 struct IPP_EXPORT C_separator_sheets : public Collection {
200   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
201   SingleCollection<C_media_col> media_col{AttrName::media_col};
202   SetOfValues<E_separator_sheets_type> separator_sheets_type{
203       AttrName::separator_sheets_type, AttrType::keyword};
204   std::vector<Attribute*> GetKnownAttributes() override;
205 };
206 typedef C_separator_sheets C_separator_sheets_actual;
207 typedef C_separator_sheets C_separator_sheets_default;
208 struct IPP_EXPORT C_cover_back : public Collection {
209   SingleValue<E_cover_type> cover_type{AttrName::cover_type, AttrType::keyword};
210   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
211   SingleCollection<C_media_col> media_col{AttrName::media_col};
212   std::vector<Attribute*> GetKnownAttributes() override;
213 };
214 typedef C_cover_back C_cover_back_actual;
215 typedef C_cover_back C_cover_back_default;
216 typedef C_cover_back C_cover_front;
217 typedef C_cover_back C_cover_front_actual;
218 typedef C_cover_back C_cover_front_default;
219 struct IPP_EXPORT C_document_format_details_default : public Collection {
220   SingleValue<std::string> document_format{AttrName::document_format,
221                                            AttrType::mimeMediaType};
222   SingleValue<StringWithLanguage> document_format_device_id{
223       AttrName::document_format_device_id, AttrType::text};
224   SingleValue<StringWithLanguage> document_format_version{
225       AttrName::document_format_version, AttrType::text};
226   SetOfValues<std::string> document_natural_language{
227       AttrName::document_natural_language, AttrType::naturalLanguage};
228   SingleValue<StringWithLanguage> document_source_application_name{
229       AttrName::document_source_application_name, AttrType::name};
230   SingleValue<StringWithLanguage> document_source_application_version{
231       AttrName::document_source_application_version, AttrType::text};
232   SingleValue<StringWithLanguage> document_source_os_name{
233       AttrName::document_source_os_name, AttrType::name};
234   SingleValue<StringWithLanguage> document_source_os_version{
235       AttrName::document_source_os_version, AttrType::text};
236   std::vector<Attribute*> GetKnownAttributes() override;
237 };
238 typedef C_document_format_details_default C_document_format_details_supplied;
239 struct IPP_EXPORT C_finishings_col : public Collection {
240   struct C_baling : public Collection {
241     SingleValue<E_baling_type> baling_type{AttrName::baling_type,
242                                            AttrType::keyword};
243     SingleValue<E_baling_when> baling_when{AttrName::baling_when,
244                                            AttrType::keyword};
245     std::vector<Attribute*> GetKnownAttributes() override;
246   };
247   struct C_binding : public Collection {
248     SingleValue<E_binding_reference_edge> binding_reference_edge{
249         AttrName::binding_reference_edge, AttrType::keyword};
250     SingleValue<E_binding_type> binding_type{AttrName::binding_type,
251                                              AttrType::keyword};
252     std::vector<Attribute*> GetKnownAttributes() override;
253   };
254   struct C_coating : public Collection {
255     SingleValue<E_coating_sides> coating_sides{AttrName::coating_sides,
256                                                AttrType::keyword};
257     SingleValue<E_coating_type> coating_type{AttrName::coating_type,
258                                              AttrType::keyword};
259     std::vector<Attribute*> GetKnownAttributes() override;
260   };
261   struct C_covering : public Collection {
262     SingleValue<E_covering_name> covering_name{AttrName::covering_name,
263                                                AttrType::keyword};
264     std::vector<Attribute*> GetKnownAttributes() override;
265   };
266   struct C_folding : public Collection {
267     SingleValue<E_folding_direction> folding_direction{
268         AttrName::folding_direction, AttrType::keyword};
269     SingleValue<int> folding_offset{AttrName::folding_offset,
270                                     AttrType::integer};
271     SingleValue<E_folding_reference_edge> folding_reference_edge{
272         AttrName::folding_reference_edge, AttrType::keyword};
273     std::vector<Attribute*> GetKnownAttributes() override;
274   };
275   struct C_laminating : public Collection {
276     SingleValue<E_laminating_sides> laminating_sides{AttrName::laminating_sides,
277                                                      AttrType::keyword};
278     SingleValue<E_laminating_type> laminating_type{AttrName::laminating_type,
279                                                    AttrType::keyword};
280     std::vector<Attribute*> GetKnownAttributes() override;
281   };
282   struct C_media_size : public Collection {
283     std::vector<Attribute*> GetKnownAttributes() override;
284   };
285   struct C_punching : public Collection {
286     SetOfValues<int> punching_locations{AttrName::punching_locations,
287                                         AttrType::integer};
288     SingleValue<int> punching_offset{AttrName::punching_offset,
289                                      AttrType::integer};
290     SingleValue<E_punching_reference_edge> punching_reference_edge{
291         AttrName::punching_reference_edge, AttrType::keyword};
292     std::vector<Attribute*> GetKnownAttributes() override;
293   };
294   struct C_stitching : public Collection {
295     SingleValue<int> stitching_angle{AttrName::stitching_angle,
296                                      AttrType::integer};
297     SetOfValues<int> stitching_locations{AttrName::stitching_locations,
298                                          AttrType::integer};
299     SingleValue<E_stitching_method> stitching_method{AttrName::stitching_method,
300                                                      AttrType::keyword};
301     SingleValue<int> stitching_offset{AttrName::stitching_offset,
302                                       AttrType::integer};
303     SingleValue<E_stitching_reference_edge> stitching_reference_edge{
304         AttrName::stitching_reference_edge, AttrType::keyword};
305     std::vector<Attribute*> GetKnownAttributes() override;
306   };
307   struct C_trimming : public Collection {
308     SingleValue<int> trimming_offset{AttrName::trimming_offset,
309                                      AttrType::integer};
310     SingleValue<E_trimming_reference_edge> trimming_reference_edge{
311         AttrName::trimming_reference_edge, AttrType::keyword};
312     SingleValue<E_trimming_type> trimming_type{AttrName::trimming_type,
313                                                AttrType::keyword};
314     SingleValue<E_trimming_when> trimming_when{AttrName::trimming_when,
315                                                AttrType::keyword};
316     std::vector<Attribute*> GetKnownAttributes() override;
317   };
318   SingleCollection<C_baling> baling{AttrName::baling};
319   SingleCollection<C_binding> binding{AttrName::binding};
320   SingleCollection<C_coating> coating{AttrName::coating};
321   SingleCollection<C_covering> covering{AttrName::covering};
322   SingleValue<E_finishing_template> finishing_template{
323       AttrName::finishing_template, AttrType::keyword};
324   SetOfCollections<C_folding> folding{AttrName::folding};
325   SingleValue<E_imposition_template> imposition_template{
326       AttrName::imposition_template, AttrType::keyword};
327   SingleCollection<C_laminating> laminating{AttrName::laminating};
328   SingleValue<RangeOfInteger> media_sheets_supported{
329       AttrName::media_sheets_supported, AttrType::rangeOfInteger};
330   SingleCollection<C_media_size> media_size{AttrName::media_size};
331   SingleValue<StringWithLanguage> media_size_name{AttrName::media_size_name,
332                                                   AttrType::name};
333   SingleCollection<C_punching> punching{AttrName::punching};
334   SingleCollection<C_stitching> stitching{AttrName::stitching};
335   SetOfCollections<C_trimming> trimming{AttrName::trimming};
336   std::vector<Attribute*> GetKnownAttributes() override;
337 };
338 typedef C_finishings_col C_finishings_col_actual;
339 typedef C_finishings_col C_finishings_col_database;
340 typedef C_finishings_col C_finishings_col_default;
341 typedef C_finishings_col C_finishings_col_ready;
342 struct IPP_EXPORT C_insert_sheet : public Collection {
343   SingleValue<int> insert_after_page_number{AttrName::insert_after_page_number,
344                                             AttrType::integer};
345   SingleValue<int> insert_count{AttrName::insert_count, AttrType::integer};
346   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
347   SingleCollection<C_media_col> media_col{AttrName::media_col};
348   std::vector<Attribute*> GetKnownAttributes() override;
349 };
350 typedef C_insert_sheet C_insert_sheet_actual;
351 typedef C_insert_sheet C_insert_sheet_default;
352 struct IPP_EXPORT C_job_accounting_sheets : public Collection {
353   SingleValue<E_job_accounting_output_bin> job_accounting_output_bin{
354       AttrName::job_accounting_output_bin, AttrType::keyword};
355   SingleValue<E_job_accounting_sheets_type> job_accounting_sheets_type{
356       AttrName::job_accounting_sheets_type, AttrType::keyword};
357   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
358   SingleCollection<C_media_col> media_col{AttrName::media_col};
359   std::vector<Attribute*> GetKnownAttributes() override;
360 };
361 typedef C_job_accounting_sheets C_job_accounting_sheets_actual;
362 typedef C_job_accounting_sheets C_job_accounting_sheets_default;
363 typedef C_cover_back C_job_cover_back;
364 typedef C_cover_back C_job_cover_back_actual;
365 typedef C_cover_back C_job_cover_back_default;
366 typedef C_cover_back C_job_cover_front;
367 typedef C_cover_back C_job_cover_front_actual;
368 typedef C_cover_back C_job_cover_front_default;
369 struct IPP_EXPORT C_job_error_sheet : public Collection {
370   SingleValue<E_job_error_sheet_type> job_error_sheet_type{
371       AttrName::job_error_sheet_type, AttrType::keyword};
372   SingleValue<E_job_error_sheet_when> job_error_sheet_when{
373       AttrName::job_error_sheet_when, AttrType::keyword};
374   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
375   SingleCollection<C_media_col> media_col{AttrName::media_col};
376   std::vector<Attribute*> GetKnownAttributes() override;
377 };
378 typedef C_job_error_sheet C_job_error_sheet_actual;
379 typedef C_job_error_sheet C_job_error_sheet_default;
380 typedef C_finishings_col C_job_finishings_col;
381 typedef C_finishings_col C_job_finishings_col_default;
382 typedef C_finishings_col C_job_finishings_col_ready;
383 struct IPP_EXPORT C_job_sheets_col : public Collection {
384   SingleValue<E_job_sheets> job_sheets{AttrName::job_sheets, AttrType::keyword};
385   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
386   SingleCollection<C_media_col> media_col{AttrName::media_col};
387   std::vector<Attribute*> GetKnownAttributes() override;
388 };
389 typedef C_job_sheets_col C_job_sheets_col_actual;
390 typedef C_job_sheets_col C_job_sheets_col_default;
391 struct IPP_EXPORT C_overrides : public Collection {
392   SingleValue<int> copies{AttrName::copies, AttrType::integer};
393   SingleCollection<C_cover_back> cover_back{AttrName::cover_back};
394   SingleCollection<C_cover_front> cover_front{AttrName::cover_front};
395   SetOfValues<RangeOfInteger> document_copies{AttrName::document_copies,
396                                               AttrType::rangeOfInteger};
397   SetOfValues<RangeOfInteger> document_numbers{AttrName::document_numbers,
398                                                AttrType::rangeOfInteger};
399   SingleValue<E_feed_orientation> feed_orientation{AttrName::feed_orientation,
400                                                    AttrType::keyword};
401   SetOfValues<E_finishings> finishings{AttrName::finishings, AttrType::enum_};
402   SetOfCollections<C_finishings_col> finishings_col{AttrName::finishings_col};
403   SingleValue<StringWithLanguage> font_name_requested{
404       AttrName::font_name_requested, AttrType::name};
405   SingleValue<int> font_size_requested{AttrName::font_size_requested,
406                                        AttrType::integer};
407   SetOfValues<int> force_front_side{AttrName::force_front_side,
408                                     AttrType::integer};
409   SingleValue<E_imposition_template> imposition_template{
410       AttrName::imposition_template, AttrType::keyword};
411   SetOfCollections<C_insert_sheet> insert_sheet{AttrName::insert_sheet};
412   SingleValue<StringWithLanguage> job_account_id{AttrName::job_account_id,
413                                                  AttrType::name};
414   SingleValue<E_job_account_type> job_account_type{AttrName::job_account_type,
415                                                    AttrType::keyword};
416   SingleCollection<C_job_accounting_sheets> job_accounting_sheets{
417       AttrName::job_accounting_sheets};
418   SingleValue<StringWithLanguage> job_accounting_user_id{
419       AttrName::job_accounting_user_id, AttrType::name};
420   SingleValue<int> job_copies{AttrName::job_copies, AttrType::integer};
421   SingleCollection<C_job_cover_back> job_cover_back{AttrName::job_cover_back};
422   SingleCollection<C_job_cover_front> job_cover_front{
423       AttrName::job_cover_front};
424   SingleValue<E_job_delay_output_until> job_delay_output_until{
425       AttrName::job_delay_output_until, AttrType::keyword};
426   SingleValue<DateTime> job_delay_output_until_time{
427       AttrName::job_delay_output_until_time, AttrType::dateTime};
428   SingleValue<E_job_error_action> job_error_action{AttrName::job_error_action,
429                                                    AttrType::keyword};
430   SingleCollection<C_job_error_sheet> job_error_sheet{
431       AttrName::job_error_sheet};
432   SetOfValues<E_job_finishings> job_finishings{AttrName::job_finishings,
433                                                AttrType::enum_};
434   SetOfCollections<C_job_finishings_col> job_finishings_col{
435       AttrName::job_finishings_col};
436   SingleValue<E_job_hold_until> job_hold_until{AttrName::job_hold_until,
437                                                AttrType::keyword};
438   SingleValue<DateTime> job_hold_until_time{AttrName::job_hold_until_time,
439                                             AttrType::dateTime};
440   SingleValue<StringWithLanguage> job_message_to_operator{
441       AttrName::job_message_to_operator, AttrType::text};
442   SingleValue<int> job_pages_per_set{AttrName::job_pages_per_set,
443                                      AttrType::integer};
444   SingleValue<std::string> job_phone_number{AttrName::job_phone_number,
445                                             AttrType::uri};
446   SingleValue<int> job_priority{AttrName::job_priority, AttrType::integer};
447   SingleValue<StringWithLanguage> job_recipient_name{
448       AttrName::job_recipient_name, AttrType::name};
449   SingleCollection<C_job_save_disposition> job_save_disposition{
450       AttrName::job_save_disposition};
451   SingleValue<StringWithLanguage> job_sheet_message{AttrName::job_sheet_message,
452                                                     AttrType::text};
453   SingleValue<E_job_sheets> job_sheets{AttrName::job_sheets, AttrType::keyword};
454   SingleCollection<C_job_sheets_col> job_sheets_col{AttrName::job_sheets_col};
455   SingleValue<E_media> media{AttrName::media, AttrType::keyword};
456   SingleCollection<C_media_col> media_col{AttrName::media_col};
457   SingleValue<E_media_input_tray_check> media_input_tray_check{
458       AttrName::media_input_tray_check, AttrType::keyword};
459   SingleValue<E_multiple_document_handling> multiple_document_handling{
460       AttrName::multiple_document_handling, AttrType::keyword};
461   SingleValue<int> number_up{AttrName::number_up, AttrType::integer};
462   SingleValue<E_orientation_requested> orientation_requested{
463       AttrName::orientation_requested, AttrType::enum_};
464   SingleValue<E_output_bin> output_bin{AttrName::output_bin, AttrType::keyword};
465   SingleValue<StringWithLanguage> output_device{AttrName::output_device,
466                                                 AttrType::name};
467   SingleValue<E_page_delivery> page_delivery{AttrName::page_delivery,
468                                              AttrType::keyword};
469   SingleValue<E_page_order_received> page_order_received{
470       AttrName::page_order_received, AttrType::keyword};
471   SetOfValues<RangeOfInteger> page_ranges{AttrName::page_ranges,
472                                           AttrType::rangeOfInteger};
473   SetOfValues<RangeOfInteger> pages{AttrName::pages, AttrType::rangeOfInteger};
474   SetOfValues<int> pages_per_subset{AttrName::pages_per_subset,
475                                     AttrType::integer};
476   SetOfCollections<C_pdl_init_file> pdl_init_file{AttrName::pdl_init_file};
477   SingleValue<E_presentation_direction_number_up>
478       presentation_direction_number_up{
479           AttrName::presentation_direction_number_up, AttrType::keyword};
480   SingleValue<E_print_color_mode> print_color_mode{AttrName::print_color_mode,
481                                                    AttrType::keyword};
482   SingleValue<E_print_content_optimize> print_content_optimize{
483       AttrName::print_content_optimize, AttrType::keyword};
484   SingleValue<E_print_quality> print_quality{AttrName::print_quality,
485                                              AttrType::enum_};
486   SingleValue<E_print_rendering_intent> print_rendering_intent{
487       AttrName::print_rendering_intent, AttrType::keyword};
488   SingleValue<E_print_scaling> print_scaling{AttrName::print_scaling,
489                                              AttrType::keyword};
490   SingleValue<Resolution> printer_resolution{AttrName::printer_resolution,
491                                              AttrType::resolution};
492   SingleCollection<C_proof_print> proof_print{AttrName::proof_print};
493   SingleCollection<C_separator_sheets> separator_sheets{
494       AttrName::separator_sheets};
495   SingleValue<E_sheet_collate> sheet_collate{AttrName::sheet_collate,
496                                              AttrType::keyword};
497   SingleValue<E_sides> sides{AttrName::sides, AttrType::keyword};
498   SingleValue<E_x_image_position> x_image_position{AttrName::x_image_position,
499                                                    AttrType::keyword};
500   SingleValue<int> x_image_shift{AttrName::x_image_shift, AttrType::integer};
501   SingleValue<int> x_side1_image_shift{AttrName::x_side1_image_shift,
502                                        AttrType::integer};
503   SingleValue<int> x_side2_image_shift{AttrName::x_side2_image_shift,
504                                        AttrType::integer};
505   SingleValue<E_y_image_position> y_image_position{AttrName::y_image_position,
506                                                    AttrType::keyword};
507   SingleValue<int> y_image_shift{AttrName::y_image_shift, AttrType::integer};
508   SingleValue<int> y_side1_image_shift{AttrName::y_side1_image_shift,
509                                        AttrType::integer};
510   SingleValue<int> y_side2_image_shift{AttrName::y_side2_image_shift,
511                                        AttrType::integer};
512   std::vector<Attribute*> GetKnownAttributes() override;
513 };
514 typedef C_overrides C_overrides_actual;
515 }  // namespace ipp
516 
517 #endif  //  LIBIPP_IPP_COLLECTIONS_H_
518