org.dishevelled.codegen
Class ClassDescription

java.lang.Object
  extended by org.dishevelled.codegen.ClassDescription

public final class ClassDescription
extends Object

A description of the attributes and associations for a class.

Version:
$Revision: 737 $ $Date: 2010-01-02 20:17:42 -0600 (Sat, 02 Jan 2010) $
Author:
Michael Heuer

Constructor Summary
ClassDescription(String packageName, String name)
          Create a new class description with the specified package name and name.
ClassDescription(String packageName, String name, String author, String version, String description)
          Create a new class description from the specified parameters.
ClassDescription(String packageName, String lower, String mixed, String upper, String author, String version, String description)
          Create a new class description from the specified parameters.
ClassDescription(String packageName, String lower, String mixed, String upper, String author, String version, String description, Set<ClassDescription> specializes, Set<InterfaceDescription> realizes, Set<Attribute> attributes, Set<Association> associations)
          Create a new class description from the specified parameters.
 
Method Summary
 boolean addAssociation(Association association)
          Add the specified association to the set of associations for this class description.
 boolean addAttribute(Attribute attribute)
          Add the specified attribute to the set of attributes for this class description.
 boolean addRealizes(InterfaceDescription realizes)
          Add the specified interface description to the set of interfaces this class description realizes.
 boolean addSpecializes(ClassDescription specializes)
          Add the specified class description to the set of classes this class description specializes.
 boolean associate(Association association)
          Add the specified association to the set of associations for this class description.
 boolean associate(ClassDescription cd, Cardinality cardinality)
          Add a new association to the set of associations for this class description to the specified class with the specified cardinality.
 boolean associate(ClassDescription cd, Cardinality cardinality, boolean bound)
          Add a new association to the set of associations for this class description to the specified class with the specified cardinality and bound flag.
 boolean associate(ClassDescription cd, Cardinality cardinality, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified class with the specified parameters.
 boolean associate(ClassDescription cd, Cardinality cardinality, boolean bound, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified class with the specified parameters.
 boolean associate(ClassDescription cd, String roleName, Cardinality cardinality)
          Add a new association to the set of attributes for this class description to the specified class with the specified role name and cardinality.
 boolean associate(ClassDescription cd, String roleName, Cardinality cardinality, boolean bound)
          Add a new association to the set of attributes for this class description to the specified class with the specified role name, cardinality, and bound flag.
 boolean associate(ClassDescription cd, String roleName, Cardinality cardinality, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified class with the specified parameters.
 boolean associate(ClassDescription cd, String roleName, Cardinality cardinality, boolean bound, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified class with the specified parameters.
 boolean associate(InterfaceDescription id, Cardinality cardinality)
          Add a new association to the set of associations for this class description to the specified interface with the specified cardinality.
 boolean associate(InterfaceDescription id, Cardinality cardinality, boolean bound)
          Add a new association to the set of associations for this class description to the specified interface with the specified cardinality and bound flag.
 boolean associate(InterfaceDescription id, Cardinality cardinality, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified interface with the specified parameters.
 boolean associate(InterfaceDescription id, Cardinality cardinality, boolean bound, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified interface with the specified parameters.
 boolean associate(InterfaceDescription id, String roleName, Cardinality cardinality)
          Add a new association to the set of attributes for this class description to the specified interface with the specified role name and cardinality.
 boolean associate(InterfaceDescription id, String roleName, Cardinality cardinality, boolean bound)
          Add a new association to the set of attributes for this class description to the specified interface with the specified role name, cardinality, and bound flag.
 boolean associate(InterfaceDescription id, String roleName, Cardinality cardinality, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified interface with the specified parameters.
 boolean associate(InterfaceDescription id, String roleName, Cardinality cardinality, boolean bound, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new association to the set of associations for this class description to the specified interface with the specified parameters.
 boolean attribute(Attribute attribute)
          Add the specified attribute to the set of attributes for this class description.
 boolean attribute(String name, String roleName, Cardinality cardinality)
          Add a new attribute to the set of attributes for this class description with the specified name, role name, and cardinality.
 boolean attribute(String name, String roleName, Cardinality cardinality, boolean bound)
          Add a new attribute to the set of attributes for this class description with the specified name, role name, cardinality, and bound flag.
 boolean attribute(String name, String roleName, Cardinality cardinality, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new attribute to the set of attributes for this class description with the specified parameters.
 boolean attribute(String name, String roleName, Cardinality cardinality, boolean bound, boolean indexed, boolean unique, boolean ordered, boolean sorted)
          Add a new attribute to the set of attributes for this class description with the specified parameters.
 Set<Association> getAssociations()
          Return an unmodifiable set of associations for this class description.
 Set<Attribute> getAttributes()
          Return an unmodifiable set of attributes for this class description.
 String getAuthor()
          Return the author for this class description.
 String getDescription()
          Return the description for this class description.
 String getLower()
          Return the lowercase name for this class description.
 String getMixed()
          Return the mixed-case name for this class description.
 String getPackageName()
          Return the package name for this class description.
 Set<InterfaceDescription> getRealizes()
          Return an unmodifiable set of interfaces this class description realizes.
 Set<ClassDescription> getSpecializes()
          Return an unmodifiable set of classes this class description specializes.
 String getUpper()
          Return the uppercase name for this class description.
 String getVersion()
          Return the version for this class description.
 boolean realizes(InterfaceDescription realizes)
          Add the specified interface description to the set of interfaces this class description realizes.
 boolean specializes(ClassDescription specializes)
          Add the specified class description to the set of classes this class description specializes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassDescription

public ClassDescription(String packageName,
                        String name)
Create a new class description with the specified package name and name.

Parameters:
packageName - package name for this class description
name - name of this class description

ClassDescription

public ClassDescription(String packageName,
                        String name,
                        String author,
                        String version,
                        String description)
Create a new class description from the specified parameters.

Parameters:
packageName - package name for this class description
name - name of this class description
author - author for this class description
version - version for this class description
description - description for this class description

ClassDescription

public ClassDescription(String packageName,
                        String lower,
                        String mixed,
                        String upper,
                        String author,
                        String version,
                        String description)
Create a new class description from the specified parameters.

Parameters:
packageName - package name for this class description
lower - lowercase name for this class description
mixed - mixed-case name for this class description
upper - uppercase name for this class description
author - author for this class description
version - version for this class description
description - description for this class description

ClassDescription

public ClassDescription(String packageName,
                        String lower,
                        String mixed,
                        String upper,
                        String author,
                        String version,
                        String description,
                        Set<ClassDescription> specializes,
                        Set<InterfaceDescription> realizes,
                        Set<Attribute> attributes,
                        Set<Association> associations)
Create a new class description from the specified parameters.

The classes this class description specializes in specializes are copied defensively into this class.

The interfaces this class description realizes in realizes are copied defensively into this class.

The attributes in attributes are copied defensively into this class.

The associations in associations are copied defensively into this class.

Parameters:
packageName - package name for this class description
lower - lowercase name for this class description
mixed - mixed-case name for this class description
upper - uppercase name for this class description
author - author for this class description
version - version for this class description
description - description for this class description
specializes - set of classes this class description specializes, must not be null
realizes - set of interfaces this class description realizes, must not be null
attributes - set of attributes, must not be null
associations - set of associations, must not be null
Method Detail

getPackageName

public String getPackageName()
Return the package name for this class description.

Returns:
the package name for this class description

getLower

public String getLower()
Return the lowercase name for this class description.

Returns:
the lowercase name for this class description

getMixed

public String getMixed()
Return the mixed-case name for this class description.

Returns:
the mixed-case name for this class description

getUpper

public String getUpper()
Return the uppercase name for this class description.

Returns:
the uppercase name for this class description

getAuthor

public String getAuthor()
Return the author for this class description.

Returns:
the author for this class description

getVersion

public String getVersion()
Return the version for this class description.

Returns:
the version for this class description

getDescription

public String getDescription()
Return the description for this class description.

Returns:
the description for this class description

getSpecializes

public Set<ClassDescription> getSpecializes()
Return an unmodifiable set of classes this class description specializes.

Returns:
an unmodifiable set of classes this class description specializes

addSpecializes

public boolean addSpecializes(ClassDescription specializes)
Add the specified class description to the set of classes this class description specializes. Return true if the set of classes this class description specializes changed as a result of this call.

Parameters:
specializes - class description to add, must not be null
Returns:
true if the set of classes this class description specializes changed as a result of this call

specializes

public boolean specializes(ClassDescription specializes)
Add the specified class description to the set of classes this class description specializes. Return true if the set of classes this class description specializes changed as a result of this call.

Parameters:
specializes - class description to add, must not be null
Returns:
true if the set of classes this class description specializes changed as a result of this call

getRealizes

public Set<InterfaceDescription> getRealizes()
Return an unmodifiable set of interfaces this class description realizes.

Returns:
an unmodifiable set of interfaces this class description realizes

addRealizes

public boolean addRealizes(InterfaceDescription realizes)
Add the specified interface description to the set of interfaces this class description realizes. Return true if the set of interfaces this class description realizes changed as a result of this call.

Parameters:
realizes - interface description to add, must not be null
Returns:
true if the set of interfaces this class description realizes changed as a result of this call

realizes

public boolean realizes(InterfaceDescription realizes)
Add the specified interface description to the set of interfaces this class description realizes. Return true if the set of interfaces this class description realizes changed as a result of this call.

Parameters:
realizes - interface description to add, must not be null
Returns:
true if the set of interfaces this class description realizes changed as a result of this call

getAttributes

public Set<Attribute> getAttributes()
Return an unmodifiable set of attributes for this class description.

Returns:
an unmodifiable set of attributes for this class description

addAttribute

public boolean addAttribute(Attribute attribute)
Add the specified attribute to the set of attributes for this class description. Return true if the set of attributes changed as a result of this call.

Parameters:
attribute - attribute to add, must not be null
Returns:
true if the set of attributes changed as a result of this call

attribute

public boolean attribute(Attribute attribute)
Add the specified attribute to the set of attributes for this class description. Return true if the set of attributes changed as a result of this call.

Parameters:
attribute - attribute to add, must not be null
Returns:
true if the set of attributes changed as a result of this call

attribute

public boolean attribute(String name,
                         String roleName,
                         Cardinality cardinality)
Add a new attribute to the set of attributes for this class description with the specified name, role name, and cardinality. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of attributes changed as a result of this call.

Parameters:
name - attribute name
roleName - role name
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
Returns:
true if the set of attributes changed as a result of this call

attribute

public boolean attribute(String name,
                         String roleName,
                         Cardinality cardinality,
                         boolean bound)
Add a new attribute to the set of attributes for this class description with the specified name, role name, cardinality, and bound flag. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of attributes changed as a result of this call.

Parameters:
name - attribute name
roleName - role name
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
bound - true if the attribute is to be a "bound" attribute
Returns:
true if the set of attributes changed as a result of this call

attribute

public boolean attribute(String name,
                         String roleName,
                         Cardinality cardinality,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new attribute to the set of attributes for this class description with the specified parameters. Return true if the set of attributes changed as a result of this call.

Parameters:
name - attribute name
roleName - role name
cardinality - cardinality, must not be null
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of attributes changed as a result of this call

attribute

public boolean attribute(String name,
                         String roleName,
                         Cardinality cardinality,
                         boolean bound,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new attribute to the set of attributes for this class description with the specified parameters. Return true if the set of attributes changed as a result of this call.

Parameters:
name - attribute name
roleName - role name
cardinality - cardinality, must not be null
bound - true if the attribute is to be a "bound" attribute
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of attributes changed as a result of this call

getAssociations

public Set<Association> getAssociations()
Return an unmodifiable set of associations for this class description.

Returns:
an unmodifiable set of associations for this class description

addAssociation

public boolean addAssociation(Association association)
Add the specified association to the set of associations for this class description. Return true if the set of associations changed as a result of this call.

Parameters:
association - association to add, must not be null
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(Association association)
Add the specified association to the set of associations for this class description. Return true if the set of associations changed as a result of this call.

Parameters:
association - association to add, must not be null
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         Cardinality cardinality)
Add a new association to the set of associations for this class description to the specified class with the specified cardinality. The assocation's role name will be the same as the class' name. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
cd - class description, must not be null
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         Cardinality cardinality,
                         boolean bound)
Add a new association to the set of associations for this class description to the specified class with the specified cardinality and bound flag. The assocation's role name will be the same as the class' name. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
cd - class description, must not be null
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
bound - true if the association is to be a "bound" association
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         String roleName,
                         Cardinality cardinality)
Add a new association to the set of attributes for this class description to the specified class with the specified role name and cardinality. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
cd - class description, must not be null
roleName - role name
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         String roleName,
                         Cardinality cardinality,
                         boolean bound)
Add a new association to the set of attributes for this class description to the specified class with the specified role name, cardinality, and bound flag. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
cd - class description, must not be null
roleName - role name
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
bound - true if the association is to be a "bound" association
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         Cardinality cardinality,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified class with the specified parameters. The association's role name will be the same as the class' name.

Parameters:
cd - class description, must not be null
cardinality - cardinality, must not be null
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         Cardinality cardinality,
                         boolean bound,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified class with the specified parameters. The association's role name will be the same as the class' name.

Parameters:
cd - class description, must not be null
cardinality - cardinality, must not be null
bound - true if the assocation is to be a "bound" association
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         String roleName,
                         Cardinality cardinality,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified class with the specified parameters.

Parameters:
cd - class description, must not be null
roleName - role name
cardinality - cardinality, must not be null
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(ClassDescription cd,
                         String roleName,
                         Cardinality cardinality,
                         boolean bound,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified class with the specified parameters.

Parameters:
cd - class description, must not be null
roleName - role name
cardinality - cardinality, must not be null
bound - true if the association is to be a "bound" association
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         Cardinality cardinality)
Add a new association to the set of associations for this class description to the specified interface with the specified cardinality. The assocation's role name will be the same as the interface's name. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
id - interface description, must not be null
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         Cardinality cardinality,
                         boolean bound)
Add a new association to the set of associations for this class description to the specified interface with the specified cardinality and bound flag. The assocation's role name will be the same as the interface's name. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
id - interface description, must not be null
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
bound - true if the assocation is to be a "bound" association
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         String roleName,
                         Cardinality cardinality)
Add a new association to the set of attributes for this class description to the specified interface with the specified role name and cardinality. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
id - interface description, must not be null
roleName - role name
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         String roleName,
                         Cardinality cardinality,
                         boolean bound)
Add a new association to the set of attributes for this class description to the specified interface with the specified role name, cardinality, and bound flag. The cardinality must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne. Return true if the set of associations changed as a result of this call.

Parameters:
id - interface description, must not be null
roleName - role name
cardinality - cardinality, must not be null and must be one of Cardinality.ZeroToOne or Cardinality.StrictlyOne
bound - true if the association is to be a "bound" association
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         Cardinality cardinality,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified interface with the specified parameters. The association's role name will be the same as the interface's name.

Parameters:
id - interface description, must not be null
cardinality - cardinality, must not be null
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         Cardinality cardinality,
                         boolean bound,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified interface with the specified parameters. The association's role name will be the same as the interface's name.

Parameters:
id - interface description, must not be null
cardinality - cardinality, must not be null
bound - true if the association is to be a "bound" association
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         String roleName,
                         Cardinality cardinality,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified interface with the specified parameters.

Parameters:
id - interface description, must not be null
roleName - role name
cardinality - cardinality, must not be null
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call

associate

public boolean associate(InterfaceDescription id,
                         String roleName,
                         Cardinality cardinality,
                         boolean bound,
                         boolean indexed,
                         boolean unique,
                         boolean ordered,
                         boolean sorted)
Add a new association to the set of associations for this class description to the specified interface with the specified parameters.

Parameters:
id - interface description, must not be null
roleName - role name
cardinality - cardinality, must not be null
bound - true if the association is to be a "bound" association
indexed - true if the collection should be indexed
unique - true if the collection should not allow duplicate elements
ordered - true if the collection should iterate over elements in insertion-order
sorted - true if the collection should iterate over elements in ascending element order, sorted according to the natural ordering of its elements (see Comparable), or by a Comparator provided at creation time
Returns:
true if the set of associations changed as a result of this call


Copyright (c) 2004-2010 held jointly by the individual authors. Licensed under the GNU Lesser General Public License (LGPL).