// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_BASE_LOOKUP_STRING_IN_FIXED_SET_H_ #define NET_BASE_LOOKUP_STRING_IN_FIXED_SET_H_ #include #include "net/base/net_export.h" namespace net { enum { kDafsaNotFound = -1, // key is not in set kDafsaFound = 0, // key is in set // The following return values are used by the implementation of // GetDomainAndRegistry() and are probably not generally useful. kDafsaExceptionRule = 1, // key excluded from set via exception kDafsaWildcardRule = 2, // key matched a wildcard rule kDafsaPrivateRule = 4, // key matched a private rule }; // Looks up the string |key| with length |key_length| in a fixed set of // strings. The set of strings must be known at compile time. It is converted to // a graph structure named a DAFSA (Deterministic Acyclic Finite State // Automaton) by the script make_dafsa.py during compilation. This permits // efficient (in time and space) lookup. The graph generated by make_dafsa.py // takes the form of a constant byte array which should be supplied via the // |graph| and |length| parameters. The return value is kDafsaNotFound, // kDafsaFound, or a bitmap consisting of one or more of kDafsaExceptionRule, // kDafsaWildcardRule and kDafsaPrivateRule ORed together. NET_EXPORT int LookupStringInFixedSet(const unsigned char* graph, size_t length, const char* key, size_t key_length); } // namespace net #endif // NET_BASE_LOOKUP_STRING_IN_FIXED_SET_H_