2 +----------------------------------------------------------------------+
4 +----------------------------------------------------------------------+
5 | Copyright (c) 2010-present Facebook, Inc. (http://www.facebook.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
18 #include "hphp/runtime/base/repo-autoload-map.h"
19 #include "hphp/runtime/base/string-data.h"
21 #include "hphp/util/blob-encoder.h"
22 #include "hphp/util/hash-map.h"
26 //////////////////////////////////////////////////////////////////////
29 struct PreClassEmitter
;
34 struct RepoAutoloadMapBuilder
{
36 template <typename Compare
>
37 using Map
= folly_concurrent_hash_map_simd
<
44 using CaseInsensitiveMap
= Map
<string_data_isame
>;
45 using CaseSensitiveMap
= Map
<string_data_same
>;
47 friend struct FuncEmitter
;
49 static std::unique_ptr
<RepoAutoloadMap
> serde(BlobDecoder
& sd
);
50 void serde(BlobEncoder
& sd
) const;
52 void addUnit(const UnitEmitter
& ue
);
55 template<typename Compare
>
56 static void serdeMap(BlobEncoder
& sd
, const Map
<Compare
>& map
) {
58 for (auto const& kv
: map
) sd(kv
.first
)(kv
.second
);
61 template<typename Map
>
62 static Map
serdeMap(BlobDecoder
& sd
) {
66 for (size_t i
= 0; i
< size
; i
++) {
67 const StringData
* str
;
77 CaseInsensitiveMap m_types
;
78 CaseInsensitiveMap m_funcs
;
79 CaseInsensitiveMap m_typeAliases
;
80 CaseSensitiveMap m_constants
;
83 //////////////////////////////////////////////////////////////////////