1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef SANDBOX_LINUX_BPF_DSL_BPF_DSL_FORWARD_H_
6 #define SANDBOX_LINUX_BPF_DSL_BPF_DSL_FORWARD_H_
7 
8 #include "base/memory/ref_counted.h"
9 #include "sandbox/sandbox_export.h"
10 
11 namespace sandbox {
12 namespace bpf_dsl {
13 
14 // The bpf_dsl_forward.h header provides forward declarations for the
15 // types defined in bpf_dsl.h. It's intended for use in user headers
16 // that need to reference bpf_dsl types, but don't require definitions.
17 
18 namespace internal {
19 class ResultExprImpl;
20 class BoolExprImpl;
21 }
22 
23 typedef scoped_refptr<const internal::ResultExprImpl> ResultExpr;
24 typedef scoped_refptr<const internal::BoolExprImpl> BoolExpr;
25 
26 template <typename T>
27 class Arg;
28 
29 class Elser;
30 
31 template <typename T>
32 class Caser;
33 
34 }  // namespace bpf_dsl
35 }  // namespace sandbox
36 
37 extern template class SANDBOX_EXPORT
38     scoped_refptr<const sandbox::bpf_dsl::internal::BoolExprImpl>;
39 extern template class SANDBOX_EXPORT
40     scoped_refptr<const sandbox::bpf_dsl::internal::ResultExprImpl>;
41 
42 #endif  // SANDBOX_LINUX_BPF_DSL_BPF_DSL_FORWARD_H_
43