#ifndef CollectionType_h
#define CollectionType_h
namespace WebCore {
enum CollectionType {
DocImages, DocApplets, DocEmbeds, DocForms, DocLinks, DocAnchors, DocScripts, DocAll,
WindowNamedItems,
DocumentNamedItems,
NodeChildren, TableTBodies, TSectionRows, TableRows,
TRCells, SelectOptions,
SelectedOptions,
DataListOptions,
MapAreas,
FormControls,
ByClass,
ByTag,
ByHTMLTag,
};
enum class CollectionTraversalType { Descendants, ChildrenOnly, CustomForwardOnly };
template<CollectionType collectionType>
struct CollectionTypeTraits {
static const CollectionTraversalType traversalType = CollectionTraversalType::Descendants;
};
template<>
struct CollectionTypeTraits<NodeChildren> {
static const CollectionTraversalType traversalType = CollectionTraversalType::ChildrenOnly;
};
template<>
struct CollectionTypeTraits<TRCells> {
static const CollectionTraversalType traversalType = CollectionTraversalType::ChildrenOnly;
};
template<>
struct CollectionTypeTraits<TSectionRows> {
static const CollectionTraversalType traversalType = CollectionTraversalType::ChildrenOnly;
};
template<>
struct CollectionTypeTraits<TableTBodies> {
static const CollectionTraversalType traversalType = CollectionTraversalType::ChildrenOnly;
};
template<>
struct CollectionTypeTraits<TableRows> {
static const CollectionTraversalType traversalType = CollectionTraversalType::CustomForwardOnly;
};
template<>
struct CollectionTypeTraits<FormControls> {
static const CollectionTraversalType traversalType = CollectionTraversalType::CustomForwardOnly;
};
}
#endif