// Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved. // // 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 // // http://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. #pragma once #include "paddle/ap/include/axpr/atomic.h" namespace ap::axpr { template class AtomicExprBuilder { public: AtomicExprBuilder() {} AtomicExprBuilder(const AtomicExprBuilder&) = delete; AtomicExprBuilder(AtomicExprBuilder&&) = delete; Atomic Var(const std::string& name) { return Atomic{tVar{name}}; } Atomic Bool(bool c) { return Atomic{c}; } Atomic Int64(int64_t c) { return Atomic{c}; } Atomic Double(double c) { return Atomic{c}; } Atomic None() { return Atomic{adt::Nothing{}}; } Atomic String(const std::string& str) { return Atomic{str}; } Atomic Lambda(const std::vector>& args, const Expr& body) { return Atomic{ap::axpr::Lambda{args, body}}; } private: }; } // namespace ap::axpr