mirror of https://gitee.com/openkylin/cups.git
112 lines
2.0 KiB
C++
112 lines
2.0 KiB
C++
|
//
|
||
|
// 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;
|
||
|
}
|