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 WorkerppdcOption::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 WorkerppdcOption::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 WorkerppdcOption::~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 WorkerppdcOption::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 WorkerppdcOption::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