extended_family:
  name_cpp: Family
  constructor:
    args:
      - {family: "std::string"}
      - {link: "std::string"}
  methods:
    evaluate:
      name_cpp: evaluate
      return_type: "double"
      access: member
      args:
        - {linear_predictor: "Eigen::ArrayXd"}
        - {response: "Eigen::ArrayXd"}
        - {weights: "Eigen::ArrayXd"}
    evaluate_d1:
      name_cpp: evaluateDerivative
      return_type: "Eigen::ArrayXd"
      access: member
      args:
        - {linear_predictor: "Eigen::ArrayXd"}
        - {response: "Eigen::ArrayXd"}
        - {weights: "Eigen::ArrayXd"}
    evaluate_d2:
      name_cpp: evaluateSecondDerivative
      return_type: "Eigen::ArrayXd"
      access: member
      args:
        - {linear_predictor: "Eigen::ArrayXd"}
        - {response: "Eigen::ArrayXd"}
        - {weights: "Eigen::ArrayXd"}
    evaluate_d3:
      name_cpp: evaluateThirdDerivative
      return_type: "Eigen::ArrayXd"
      access: member
      args:
        - {linear_predictor: "Eigen::ArrayXd"}
        - {response: "Eigen::ArrayXd"}
        - {weights: "Eigen::ArrayXd"}
    evaluate_d4:
      name_cpp: evaluateFourthDerivative
      return_type: "Eigen::ArrayXd"
      access: member
      args:
        - {linear_predictor: "Eigen::ArrayXd"}
        - {response: "Eigen::ArrayXd"}
        - {weights: "Eigen::ArrayXd"}

