<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: ast.proto

namespace Proto;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * Generated from protobuf message <code>proto.AstLookupConfig</code>
 */
class AstLookupConfig extends \Google\Protobuf\Internal\Message
{
    /**
     * List the APIs as a list of pre-defined ast nodes
     *
     * Generated from protobuf field <code>repeated .proto.AstNode apis = 1;</code>
     */
    private $apis;
    /**
     * Save generic feature result
     *
     * Generated from protobuf field <code>bool save_feature = 2;</code>
     */
    private $save_feature = false;
    /**
     * SMT formula of node ids, interpretable by Z3, allow flexible constraints on the ast nodes
     * https://rise4fun.com/z3/tutorialcontent/sequences
     *
     * Generated from protobuf field <code>string smt_formula = 3;</code>
     */
    private $smt_formula = '';
    /**
     * The satisfiability evaluation result, filled after evaluation. True means we will investigate further on this package.
     *
     * Generated from protobuf field <code>bool smt_satisfied = 4;</code>
     */
    private $smt_satisfied = false;
    /**
     * Allow any base_type and match only function name. This is a temporary to dynamic types in scripting languages.
     *
     * Generated from protobuf field <code>bool func_only = 5;</code>
     */
    private $func_only = false;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type \Proto\AstNode[]|\Google\Protobuf\Internal\RepeatedField $apis
     *           List the APIs as a list of pre-defined ast nodes
     *     @type bool $save_feature
     *           Save generic feature result
     *     @type string $smt_formula
     *           SMT formula of node ids, interpretable by Z3, allow flexible constraints on the ast nodes
     *           https://rise4fun.com/z3/tutorialcontent/sequences
     *     @type bool $smt_satisfied
     *           The satisfiability evaluation result, filled after evaluation. True means we will investigate further on this package.
     *     @type bool $func_only
     *           Allow any base_type and match only function name. This is a temporary to dynamic types in scripting languages.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Ast::initOnce();
        parent::__construct($data);
    }

    /**
     * List the APIs as a list of pre-defined ast nodes
     *
     * Generated from protobuf field <code>repeated .proto.AstNode apis = 1;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApis()
    {
        return $this->apis;
    }

    /**
     * List the APIs as a list of pre-defined ast nodes
     *
     * Generated from protobuf field <code>repeated .proto.AstNode apis = 1;</code>
     * @param \Proto\AstNode[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApis($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Proto\AstNode::class);
        $this->apis = $arr;

        return $this;
    }

    /**
     * Save generic feature result
     *
     * Generated from protobuf field <code>bool save_feature = 2;</code>
     * @return bool
     */
    public function getSaveFeature()
    {
        return $this->save_feature;
    }

    /**
     * Save generic feature result
     *
     * Generated from protobuf field <code>bool save_feature = 2;</code>
     * @param bool $var
     * @return $this
     */
    public function setSaveFeature($var)
    {
        GPBUtil::checkBool($var);
        $this->save_feature = $var;

        return $this;
    }

    /**
     * SMT formula of node ids, interpretable by Z3, allow flexible constraints on the ast nodes
     * https://rise4fun.com/z3/tutorialcontent/sequences
     *
     * Generated from protobuf field <code>string smt_formula = 3;</code>
     * @return string
     */
    public function getSmtFormula()
    {
        return $this->smt_formula;
    }

    /**
     * SMT formula of node ids, interpretable by Z3, allow flexible constraints on the ast nodes
     * https://rise4fun.com/z3/tutorialcontent/sequences
     *
     * Generated from protobuf field <code>string smt_formula = 3;</code>
     * @param string $var
     * @return $this
     */
    public function setSmtFormula($var)
    {
        GPBUtil::checkString($var, True);
        $this->smt_formula = $var;

        return $this;
    }

    /**
     * The satisfiability evaluation result, filled after evaluation. True means we will investigate further on this package.
     *
     * Generated from protobuf field <code>bool smt_satisfied = 4;</code>
     * @return bool
     */
    public function getSmtSatisfied()
    {
        return $this->smt_satisfied;
    }

    /**
     * The satisfiability evaluation result, filled after evaluation. True means we will investigate further on this package.
     *
     * Generated from protobuf field <code>bool smt_satisfied = 4;</code>
     * @param bool $var
     * @return $this
     */
    public function setSmtSatisfied($var)
    {
        GPBUtil::checkBool($var);
        $this->smt_satisfied = $var;

        return $this;
    }

    /**
     * Allow any base_type and match only function name. This is a temporary to dynamic types in scripting languages.
     *
     * Generated from protobuf field <code>bool func_only = 5;</code>
     * @return bool
     */
    public function getFuncOnly()
    {
        return $this->func_only;
    }

    /**
     * Allow any base_type and match only function name. This is a temporary to dynamic types in scripting languages.
     *
     * Generated from protobuf field <code>bool func_only = 5;</code>
     * @param bool $var
     * @return $this
     */
    public function setFuncOnly($var)
    {
        GPBUtil::checkBool($var);
        $this->func_only = $var;

        return $this;
    }

}

