Skip to content

Commit

Permalink
Introduce cel::Expr
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 627733102
  • Loading branch information
jcking authored and copybara-github committed Apr 25, 2024
1 parent 2869b0d commit d336d8b
Show file tree
Hide file tree
Showing 7 changed files with 2,721 additions and 0 deletions.
48 changes: 48 additions & 0 deletions common/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,54 @@ package(default_visibility = ["//visibility:public"])

licenses(["notice"])

cc_library(
name = "ast",
srcs = ["ast.cc"],
hdrs = ["ast.h"],
deps = [
":constant",
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/base:no_destructor",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/types:optional",
"@com_google_absl//absl/types:span",
"@com_google_absl//absl/types:variant",
],
)

cc_test(
name = "ast_test",
srcs = ["ast_test.cc"],
deps = [
":ast",
"//internal:testing",
],
)

cc_library(
name = "constant",
srcs = ["constant.cc"],
hdrs = ["constant.h"],
deps = [
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/base:no_destructor",
"@com_google_absl//absl/strings:string_view",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:variant",
],
)

cc_test(
name = "constant_test",
srcs = ["constant_test.cc"],
deps = [
":constant",
"//internal:testing",
"@com_google_absl//absl/time",
],
)

cc_library(
name = "operators",
srcs = [
Expand Down
66 changes: 66 additions & 0 deletions common/ast.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "common/ast.h"

#include "absl/base/no_destructor.h"

namespace cel {

const UnspecifiedExpr& UnspecifiedExpr::default_instance() {
static const absl::NoDestructor<UnspecifiedExpr> instance;
return *instance;
}

const IdentExpr& IdentExpr::default_instance() {
static const absl::NoDestructor<IdentExpr> instance;
return *instance;
}

const SelectExpr& SelectExpr::default_instance() {
static const absl::NoDestructor<SelectExpr> instance;
return *instance;
}

const CallExpr& CallExpr::default_instance() {
static const absl::NoDestructor<CallExpr> instance;
return *instance;
}

const ListExpr& ListExpr::default_instance() {
static const absl::NoDestructor<ListExpr> instance;
return *instance;
}

const StructExpr& StructExpr::default_instance() {
static const absl::NoDestructor<StructExpr> instance;
return *instance;
}

const MapExpr& MapExpr::default_instance() {
static const absl::NoDestructor<MapExpr> instance;
return *instance;
}

const ComprehensionExpr& ComprehensionExpr::default_instance() {
static const absl::NoDestructor<ComprehensionExpr> instance;
return *instance;
}

const Expr& Expr::default_instance() {
static const absl::NoDestructor<Expr> instance;
return *instance;
}

} // namespace cel
Loading

0 comments on commit d336d8b

Please sign in to comment.