Lucene++ - a full-featured, c++ search engine
API Documentation


Loading...
Searching...
No Matches
AttributeSource.h
Go to the documentation of this file.
1
2// Copyright (c) 2009-2014 Alan Wright. All rights reserved.
3// Distributable under the terms of either the Apache License (Version 2.0)
4// or the GNU Lesser General Public License.
6
7#ifndef ATTRIBUTESOURCE_H
8#define ATTRIBUTESOURCE_H
9
10#include "LuceneObject.h"
11
12namespace Lucene {
13
14class LPPAPI AttributeFactory : public LuceneObject {
15protected:
17
18public:
20
22
23public:
25 virtual AttributePtr createAttributeInstance(const String& className);
26
27 template <class ATTR>
28 AttributePtr createInstance(const String& className) {
29 AttributePtr attrImpl = createAttributeInstance(className);
30 return attrImpl ? attrImpl : newLucene<ATTR>();
31 }
32
36};
37
43class LPPAPI AttributeSource : public LuceneObject {
44public:
47
50
54
56
58
59protected:
61 MapStringAttribute attributes;
63
64public:
67
70 template <class ATTR>
71 boost::shared_ptr<ATTR> addAttribute() {
72 String className(ATTR::_getClassName());
73 boost::shared_ptr<ATTR> attrImpl(boost::dynamic_pointer_cast<ATTR>(getAttribute(className)));
74 if (!attrImpl) {
75 attrImpl = boost::dynamic_pointer_cast<ATTR>(factory->createInstance<ATTR>(className));
76 if (!attrImpl) {
77 boost::throw_exception(IllegalArgumentException(L"Could not instantiate implementing class for " + className));
78 }
79 addAttribute(className, attrImpl);
80 }
81 return attrImpl;
82 }
83
85 void addAttribute(const String& className, const AttributePtr& attrImpl);
86
89
91 template <class ATTR>
92 bool hasAttribute() {
93 return getAttribute(ATTR::_getClassName()).get() != NULL;
94 }
95
97 template <class ATTR>
98 boost::shared_ptr<ATTR> getAttribute() {
99 String className(ATTR::_getClassName());
100 boost::shared_ptr<ATTR> attr(boost::dynamic_pointer_cast<ATTR>(getAttribute(className)));
101 if (!attr) {
102 boost::throw_exception(IllegalArgumentException(L"This AttributeSource does not have the attribute '" + className + L"'."));
103 }
104 return attr;
105 }
106
110
114
125
127 virtual int32_t hashCode();
128
130 virtual bool equals(const LuceneObjectPtr& other);
131
133 virtual String toString();
134
139
142
143protected:
146 AttributePtr getAttribute(const String& className);
147
149 bool hasAttribute(const String& className);
150
152};
153
155public:
157
159
160public:
162 virtual AttributePtr createAttributeInstance(const String& className);
163};
164
168class LPPAPI AttributeSourceState : public LuceneObject {
169public:
171
173
174protected:
177
178public:
180
181 friend class AttributeSource;
182};
183
184}
185
186#endif
#define LUCENE_CLASS(Name)
Definition LuceneObject.h:24
Definition AttributeSource.h:14
static AttributeFactoryPtr DEFAULT_ATTRIBUTE_FACTORY()
This is the default factory that creates Attributes using the class name of the supplied Attribute in...
virtual AttributePtr createAttributeInstance(const String &className)
returns an Attribute.
AttributePtr createInstance(const String &className)
Definition AttributeSource.h:28
This class holds the state of an AttributeSource.
Definition AttributeSource.h:168
virtual LuceneObjectPtr clone(const LuceneObjectPtr &other=LuceneObjectPtr())
Return clone of this object.
AttributePtr attribute
Definition AttributeSource.h:175
AttributeSourceStatePtr next
Definition AttributeSource.h:176
An AttributeSource contains a list of different Attributes, and methods to add and get them....
Definition AttributeSource.h:43
AttributeSourceStatePtr captureState()
Captures the state of all Attributes. The return value can be passed to restoreState to restore the s...
virtual bool equals(const LuceneObjectPtr &other)
Return whether two objects are equal.
bool hasAttributes()
Returns true if this AttributeSource has any attributes.
AttributeSourceStatePtr currentState
Definition AttributeSource.h:62
virtual int32_t hashCode()
Return hash code for this object.
AttributeSource(const AttributeSourcePtr &input)
An AttributeSource that uses the same attributes as the supplied one.
void clearAttributes()
Resets all Attributes in this AttributeSource by calling AttributeImpl#clear() on each Attribute impl...
void addAttribute(const String &className, const AttributePtr &attrImpl)
Adds a custom Attribute instance.
Collection< AttributePtr > getAttributes()
Return a vector of attributes based on currentState.
AttributePtr getAttribute(const String &className)
The caller must pass in a className value. This method checks if an instance of that class is already...
boost::shared_ptr< ATTR > addAttribute()
This method first checks if an instance of that class is already in this AttributeSource and returns ...
Definition AttributeSource.h:71
void restoreState(const AttributeSourceStatePtr &state)
Restores this state by copying the values of all attribute implementations that this state contains i...
virtual String toString()
Returns a string representation of the object.
bool hasAttribute(const String &className)
Returns true, if this AttributeSource contains the passed-in Attribute.
AttributeSource(const AttributeFactoryPtr &factory)
An AttributeSource using the supplied AttributeFactory for creating new Attribute instances.
AttributeSource()
An AttributeSource using the default attribute factory DefaultAttributeFactory.
bool hasAttribute()
Returns true, if this AttributeSource contains the passed-in Attribute.
Definition AttributeSource.h:92
AttributeFactoryPtr factory
Definition AttributeSource.h:60
MapStringAttribute attributes
Definition AttributeSource.h:61
boost::shared_ptr< ATTR > getAttribute()
Returns the instance of the passed in Attribute contained in this AttributeSource.
Definition AttributeSource.h:98
AttributeFactoryPtr getAttributeFactory()
returns the used AttributeFactory.
AttributeSourcePtr cloneAttributes()
Performs a clone of all AttributeImpl instances returned in a new AttributeSource instance....
Utility template class to handle collections that can be safely copied and shared.
Definition Collection.h:17
Definition AttributeSource.h:154
virtual AttributePtr createAttributeInstance(const String &className)
returns an Attribute.
Definition LuceneException.h:67
Base class for all Lucene classes.
Definition LuceneObject.h:31
Definition AbstractAllTermDocs.h:12
boost::shared_ptr< LuceneObject > LuceneObjectPtr
Definition LuceneTypes.h:539
boost::shared_ptr< AttributeSource > AttributeSourcePtr
Definition LuceneTypes.h:520
boost::shared_ptr< AttributeSourceState > AttributeSourceStatePtr
Definition LuceneTypes.h:521
boost::shared_ptr< AttributeFactory > AttributeFactoryPtr
Definition LuceneTypes.h:519
boost::shared_ptr< Attribute > AttributePtr
Definition LuceneTypes.h:518

clucene.sourceforge.net