| // |
| // Option class for the CUPS PPD Compiler. |
| // |
| // Copyright 2007-2011 by Apple Inc. |
| // Copyright 2002-2005 by Easy Software Products. |
| // |
| // Licensed under Apache License v2.0. See the file "LICENSE" for more information. |
| // |
| |
| // |
| // Include necessary headers... |
| // |
| |
| #include "ppdc-private.h" |
| |
| |
| // |
| // 'ppdcOption::ppdcOption()' - Create a new option. |
| // |
| |
| ppdcOption::ppdcOption(ppdcOptType ot, // I - Option type |
| const char *n, // I - Option name |
| const char *t, // I - Option text |
| ppdcOptSection s, // I - Section |
| float o) // I - Ordering number |
| : ppdcShared() |
| { |
| PPDC_NEW; |
| |
| type = ot; |
| name = new ppdcString(n); |
| text = new ppdcString(t); |
| section = s; |
| order = o; |
| choices = new ppdcArray(); |
| defchoice = 0; |
| } |
| |
| |
| // |
| // 'ppdcOption::ppdcOption()' - Copy a new option. |
| // |
| |
| ppdcOption::ppdcOption(ppdcOption *o) // I - Template option |
| { |
| PPDC_NEW; |
| |
| o->name->retain(); |
| o->text->retain(); |
| if (o->defchoice) |
| o->defchoice->retain(); |
| |
| type = o->type; |
| name = o->name; |
| text = o->text; |
| section = o->section; |
| order = o->order; |
| choices = new ppdcArray(o->choices); |
| defchoice = o->defchoice; |
| } |
| |
| |
| // |
| // 'ppdcOption::~ppdcOption()' - Destroy an option. |
| // |
| |
| ppdcOption::~ppdcOption() |
| { |
| PPDC_DELETE; |
| |
| name->release(); |
| text->release(); |
| if (defchoice) |
| defchoice->release(); |
| choices->release(); |
| } |
| |
| |
| // |
| // 'ppdcOption::find_choice()' - Find an option choice. |
| // |
| |
| ppdcChoice * // O - Choice or NULL |
| ppdcOption::find_choice(const char *n) // I - Name of choice |
| { |
| ppdcChoice *c; // Current choice |
| |
| |
| for (c = (ppdcChoice *)choices->first(); c; c = (ppdcChoice *)choices->next()) |
| if (!_cups_strcasecmp(n, c->name->value)) |
| return (c); |
| |
| return (0); |
| } |
| |
| |
| // |
| // 'ppdcOption::set_defchoice()' - Set the default choice. |
| // |
| |
| void |
| ppdcOption::set_defchoice(ppdcChoice *c) // I - Choice |
| { |
| if (defchoice) |
| defchoice->release(); |
| |
| if (c->name) |
| c->name->retain(); |
| |
| defchoice = c->name; |
| } |