xref: /aosp_15_r20/external/libcups/ppdc/ppdc-option.cxx (revision 5e7646d21f1134fb0638875d812ef646c12ab91e)
1*5e7646d2SAndroid Build Coastguard Worker //
2*5e7646d2SAndroid Build Coastguard Worker // Option class for the CUPS PPD Compiler.
3*5e7646d2SAndroid Build Coastguard Worker //
4*5e7646d2SAndroid Build Coastguard Worker // Copyright 2007-2011 by Apple Inc.
5*5e7646d2SAndroid Build Coastguard Worker // Copyright 2002-2005 by Easy Software Products.
6*5e7646d2SAndroid Build Coastguard Worker //
7*5e7646d2SAndroid Build Coastguard Worker // Licensed under Apache License v2.0.  See the file "LICENSE" for more information.
8*5e7646d2SAndroid Build Coastguard Worker //
9*5e7646d2SAndroid Build Coastguard Worker 
10*5e7646d2SAndroid Build Coastguard Worker //
11*5e7646d2SAndroid Build Coastguard Worker // Include necessary headers...
12*5e7646d2SAndroid Build Coastguard Worker //
13*5e7646d2SAndroid Build Coastguard Worker 
14*5e7646d2SAndroid Build Coastguard Worker #include "ppdc-private.h"
15*5e7646d2SAndroid Build Coastguard Worker 
16*5e7646d2SAndroid Build Coastguard Worker 
17*5e7646d2SAndroid Build Coastguard Worker //
18*5e7646d2SAndroid Build Coastguard Worker // 'ppdcOption::ppdcOption()' - Create a new option.
19*5e7646d2SAndroid Build Coastguard Worker //
20*5e7646d2SAndroid Build Coastguard Worker 
ppdcOption(ppdcOptType ot,const char * n,const char * t,ppdcOptSection s,float o)21*5e7646d2SAndroid Build Coastguard Worker ppdcOption::ppdcOption(ppdcOptType    ot,	// I - Option type
22*5e7646d2SAndroid Build Coastguard Worker                        const char     *n,	// I - Option name
23*5e7646d2SAndroid Build Coastguard Worker 		       const char     *t,	// I - Option text
24*5e7646d2SAndroid Build Coastguard Worker 		       ppdcOptSection s,	// I - Section
25*5e7646d2SAndroid Build Coastguard Worker                        float          o)	// I - Ordering number
26*5e7646d2SAndroid Build Coastguard Worker   : ppdcShared()
27*5e7646d2SAndroid Build Coastguard Worker {
28*5e7646d2SAndroid Build Coastguard Worker   PPDC_NEW;
29*5e7646d2SAndroid Build Coastguard Worker 
30*5e7646d2SAndroid Build Coastguard Worker   type      = ot;
31*5e7646d2SAndroid Build Coastguard Worker   name      = new ppdcString(n);
32*5e7646d2SAndroid Build Coastguard Worker   text      = new ppdcString(t);
33*5e7646d2SAndroid Build Coastguard Worker   section   = s;
34*5e7646d2SAndroid Build Coastguard Worker   order     = o;
35*5e7646d2SAndroid Build Coastguard Worker   choices   = new ppdcArray();
36*5e7646d2SAndroid Build Coastguard Worker   defchoice = 0;
37*5e7646d2SAndroid Build Coastguard Worker }
38*5e7646d2SAndroid Build Coastguard Worker 
39*5e7646d2SAndroid Build Coastguard Worker 
40*5e7646d2SAndroid Build Coastguard Worker //
41*5e7646d2SAndroid Build Coastguard Worker // 'ppdcOption::ppdcOption()' - Copy a new option.
42*5e7646d2SAndroid Build Coastguard Worker //
43*5e7646d2SAndroid Build Coastguard Worker 
ppdcOption(ppdcOption * o)44*5e7646d2SAndroid Build Coastguard Worker ppdcOption::ppdcOption(ppdcOption *o)		// I - Template option
45*5e7646d2SAndroid Build Coastguard Worker {
46*5e7646d2SAndroid Build Coastguard Worker   PPDC_NEW;
47*5e7646d2SAndroid Build Coastguard Worker 
48*5e7646d2SAndroid Build Coastguard Worker   o->name->retain();
49*5e7646d2SAndroid Build Coastguard Worker   o->text->retain();
50*5e7646d2SAndroid Build Coastguard Worker   if (o->defchoice)
51*5e7646d2SAndroid Build Coastguard Worker     o->defchoice->retain();
52*5e7646d2SAndroid Build Coastguard Worker 
53*5e7646d2SAndroid Build Coastguard Worker   type      = o->type;
54*5e7646d2SAndroid Build Coastguard Worker   name      = o->name;
55*5e7646d2SAndroid Build Coastguard Worker   text      = o->text;
56*5e7646d2SAndroid Build Coastguard Worker   section   = o->section;
57*5e7646d2SAndroid Build Coastguard Worker   order     = o->order;
58*5e7646d2SAndroid Build Coastguard Worker   choices   = new ppdcArray(o->choices);
59*5e7646d2SAndroid Build Coastguard Worker   defchoice = o->defchoice;
60*5e7646d2SAndroid Build Coastguard Worker }
61*5e7646d2SAndroid Build Coastguard Worker 
62*5e7646d2SAndroid Build Coastguard Worker 
63*5e7646d2SAndroid Build Coastguard Worker //
64*5e7646d2SAndroid Build Coastguard Worker // 'ppdcOption::~ppdcOption()' - Destroy an option.
65*5e7646d2SAndroid Build Coastguard Worker //
66*5e7646d2SAndroid Build Coastguard Worker 
~ppdcOption()67*5e7646d2SAndroid Build Coastguard Worker ppdcOption::~ppdcOption()
68*5e7646d2SAndroid Build Coastguard Worker {
69*5e7646d2SAndroid Build Coastguard Worker   PPDC_DELETE;
70*5e7646d2SAndroid Build Coastguard Worker 
71*5e7646d2SAndroid Build Coastguard Worker   name->release();
72*5e7646d2SAndroid Build Coastguard Worker   text->release();
73*5e7646d2SAndroid Build Coastguard Worker   if (defchoice)
74*5e7646d2SAndroid Build Coastguard Worker     defchoice->release();
75*5e7646d2SAndroid Build Coastguard Worker   choices->release();
76*5e7646d2SAndroid Build Coastguard Worker }
77*5e7646d2SAndroid Build Coastguard Worker 
78*5e7646d2SAndroid Build Coastguard Worker 
79*5e7646d2SAndroid Build Coastguard Worker //
80*5e7646d2SAndroid Build Coastguard Worker // 'ppdcOption::find_choice()' - Find an option choice.
81*5e7646d2SAndroid Build Coastguard Worker //
82*5e7646d2SAndroid Build Coastguard Worker 
83*5e7646d2SAndroid Build Coastguard Worker ppdcChoice *					// O - Choice or NULL
find_choice(const char * n)84*5e7646d2SAndroid Build Coastguard Worker ppdcOption::find_choice(const char *n)		// I - Name of choice
85*5e7646d2SAndroid Build Coastguard Worker {
86*5e7646d2SAndroid Build Coastguard Worker   ppdcChoice	*c;				// Current choice
87*5e7646d2SAndroid Build Coastguard Worker 
88*5e7646d2SAndroid Build Coastguard Worker 
89*5e7646d2SAndroid Build Coastguard Worker   for (c = (ppdcChoice *)choices->first(); c; c = (ppdcChoice *)choices->next())
90*5e7646d2SAndroid Build Coastguard Worker     if (!_cups_strcasecmp(n, c->name->value))
91*5e7646d2SAndroid Build Coastguard Worker       return (c);
92*5e7646d2SAndroid Build Coastguard Worker 
93*5e7646d2SAndroid Build Coastguard Worker   return (0);
94*5e7646d2SAndroid Build Coastguard Worker }
95*5e7646d2SAndroid Build Coastguard Worker 
96*5e7646d2SAndroid Build Coastguard Worker 
97*5e7646d2SAndroid Build Coastguard Worker //
98*5e7646d2SAndroid Build Coastguard Worker // 'ppdcOption::set_defchoice()' - Set the default choice.
99*5e7646d2SAndroid Build Coastguard Worker //
100*5e7646d2SAndroid Build Coastguard Worker 
101*5e7646d2SAndroid Build Coastguard Worker void
set_defchoice(ppdcChoice * c)102*5e7646d2SAndroid Build Coastguard Worker ppdcOption::set_defchoice(ppdcChoice *c)	// I - Choice
103*5e7646d2SAndroid Build Coastguard Worker {
104*5e7646d2SAndroid Build Coastguard Worker   if (defchoice)
105*5e7646d2SAndroid Build Coastguard Worker     defchoice->release();
106*5e7646d2SAndroid Build Coastguard Worker 
107*5e7646d2SAndroid Build Coastguard Worker   if (c->name)
108*5e7646d2SAndroid Build Coastguard Worker     c->name->retain();
109*5e7646d2SAndroid Build Coastguard Worker 
110*5e7646d2SAndroid Build Coastguard Worker   defchoice = c->name;
111*5e7646d2SAndroid Build Coastguard Worker }
112