Index: sandbox/linux/bpf_dsl/bpf_dsl.h |
diff --git a/sandbox/linux/bpf_dsl/bpf_dsl.h b/sandbox/linux/bpf_dsl/bpf_dsl.h |
index 73dd6b942ef85bf43662a800efcd8414c9156984..bb3557877e6292c9ee5504a9adfb18d933aaa41d 100644 |
--- a/sandbox/linux/bpf_dsl/bpf_dsl.h |
+++ b/sandbox/linux/bpf_dsl/bpf_dsl.h |
@@ -282,9 +282,6 @@ class SANDBOX_EXPORT Caser { |
// Official API ends here. |
// ===================================================================== |
-// Definitions below are necessary here only for C++03 compatibility. |
-// Once C++11 is available, they should be moved into bpf_dsl.cc via extern |
-// templates. |
namespace internal { |
// Make argument-dependent lookup work. This is necessary because although |
@@ -305,37 +302,6 @@ SANDBOX_EXPORT BoolExpr |
// Returns the default mask for a system call argument of the specified size. |
SANDBOX_EXPORT uint64_t DefaultMask(size_t size); |
-// Internal interface implemented by BoolExpr implementations. |
-class SANDBOX_EXPORT BoolExprImpl : public base::RefCounted<BoolExprImpl> { |
- public: |
- BoolExprImpl() {} |
- virtual ErrorCode Compile(SandboxBPF* sb, |
- ErrorCode true_ec, |
- ErrorCode false_ec) const = 0; |
- |
- protected: |
- virtual ~BoolExprImpl() {} |
- |
- private: |
- friend class base::RefCounted<BoolExprImpl>; |
- DISALLOW_COPY_AND_ASSIGN(BoolExprImpl); |
-}; |
- |
-// Internal interface implemented by ResultExpr implementations. |
-class SANDBOX_EXPORT ResultExprImpl : public base::RefCounted<ResultExprImpl> { |
- public: |
- ResultExprImpl() {} |
- virtual ErrorCode Compile(SandboxBPF* sb) const = 0; |
- virtual bool HasUnsafeTraps() const; |
- |
- protected: |
- virtual ~ResultExprImpl() {} |
- |
- private: |
- friend class base::RefCounted<ResultExprImpl>; |
- DISALLOW_COPY_AND_ASSIGN(ResultExprImpl); |
-}; |
- |
} // namespace internal |
template <typename T> |
@@ -388,4 +354,9 @@ ResultExpr Caser<T>::Default(ResultExpr result) const { |
} // namespace bpf_dsl |
} // namespace sandbox |
+extern template class SANDBOX_EXPORT |
+ scoped_refptr<const sandbox::bpf_dsl::internal::BoolExprImpl>; |
+extern template class SANDBOX_EXPORT |
+ scoped_refptr<const sandbox::bpf_dsl::internal::ResultExprImpl>; |
+ |
#endif // SANDBOX_LINUX_BPF_DSL_BPF_DSL_H_ |