Member List
|
Clothoids
|
G2lib::ClothoidList Member List
This is the complete list of members for G2lib::ClothoidList, including all inherited members.
| BaseCurve()=delete (defined in G2lib::BaseCurve) | G2lib::BaseCurve | |
| BaseCurve(BaseCurve const &)=delete (defined in G2lib::BaseCurve) | G2lib::BaseCurve | |
| BaseCurve(string const &name) | G2lib::BaseCurve | inline |
| bb_triangles(vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override | G2lib::ClothoidList | virtual |
| bb_triangles_ISO(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override | G2lib::ClothoidList | virtual |
| bb_triangles_SAE(real_type offs, vector< Triangle2D > &tvec, real_type max_angle=Utils::m_pi/6, real_type max_size=1e100, integer icurve=0) const override | G2lib::ClothoidList | inlinevirtual |
| bbox(real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override | G2lib::ClothoidList | inlinevirtual |
| bbox_ISO(real_type offs, real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const override | G2lib::ClothoidList | virtual |
| bbox_SAE(real_type offs, real_type &xmin, real_type &ymin, real_type &xmax, real_type &ymax) const | G2lib::BaseCurve | inline |
| build(LineSegment const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(CircleArc const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(ClothoidCurve const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(Biarc const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(PolyLine const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(BiarcList const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(ClothoidList const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(G2solve2arc const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(G2solve3arc const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(G2solveCLC const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(Dubins const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(Dubins3p const &) (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| build(real_type x0, real_type y0, real_type theta0, integer n, real_type const s[], real_type const kappa[]) | G2lib::ClothoidList | |
| build(real_type x0, real_type y0, real_type theta0, vector< real_type > const &s, vector< real_type > const &kappa) | G2lib::ClothoidList | inline |
| build(GenericContainer const &gc) (defined in G2lib::BaseCurve) | G2lib::BaseCurve | inline |
| build_G1(integer n, real_type const x[], real_type const y[]) | G2lib::ClothoidList | |
| build_G1(integer n, real_type const x[], real_type const y[], real_type const theta[]) | G2lib::ClothoidList | |
| build_raw(integer n, real_type const x[], real_type const y[], real_type const abscissa[], real_type const theta[], real_type const kappa[]) | G2lib::ClothoidList | |
| build_raw(vector< real_type > const &x, vector< real_type > const &y, vector< real_type > const &abscissa, vector< real_type > const &theta, vector< real_type > const &kappa) | G2lib::ClothoidList | inline |
| change_origin(real_type newx0, real_type newy0) override | G2lib::ClothoidList | virtual |
| closest_point_by_sample(real_type ds, real_type qx, real_type qy, real_type &X, real_type &Y, real_type &S) const | G2lib::ClothoidList | |
| closest_point_in_range_ISO(real_type qx, real_type qy, integer icurve_begin, integer icurve_end, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst, integer &icurve) const | G2lib::ClothoidList | |
| closest_point_in_range_SAE(real_type qx, real_type qy, integer icurve_begin, integer icurve_end, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst, integer &icurve) const | G2lib::ClothoidList | inline |
| closest_point_in_s_range_ISO(real_type qx, real_type qy, real_type s_begin, real_type s_end, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst, integer &icurve) const | G2lib::ClothoidList | |
| closest_point_in_s_range_SAE(real_type qx, real_type qy, real_type s_begin, real_type s_end, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst, integer &icurve) const | G2lib::ClothoidList | inline |
| closest_point_ISO(real_type qx, real_type qy, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const override | G2lib::ClothoidList | virtual |
| closest_point_ISO(real_type qx, real_type qy, real_type offs, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const override | G2lib::ClothoidList | virtual |
| closest_point_SAE(real_type qx, real_type qy, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const | G2lib::ClothoidList | inline |
| closest_point_SAE(real_type qx, real_type qy, real_type offs, real_type &x, real_type &y, real_type &s, real_type &t, real_type &dst) const | G2lib::ClothoidList | inline |
| closest_segment(real_type qx, real_type qy) const | G2lib::ClothoidList | |
| closure_check(real_type tol_xy=1e-6, real_type tol_tg=1e-6) const | G2lib::ClothoidList | inline |
| closure_gap_tx() const | G2lib::ClothoidList | inline |
| closure_gap_ty() const | G2lib::ClothoidList | inline |
| closure_gap_x() const | G2lib::ClothoidList | inline |
| closure_gap_y() const | G2lib::ClothoidList | inline |
| ClothoidList()=delete | G2lib::ClothoidList | |
| ClothoidList(string const &name) | G2lib::ClothoidList | inline |
| ClothoidList(ClothoidList const &s) | G2lib::ClothoidList | inline |
| ClothoidList(LineSegment const &LS) | G2lib::ClothoidList | explicit |
| ClothoidList(CircleArc const &C) | G2lib::ClothoidList | explicit |
| ClothoidList(Biarc const &B) | G2lib::ClothoidList | explicit |
| ClothoidList(BiarcList const &BL) | G2lib::ClothoidList | explicit |
| ClothoidList(ClothoidCurve const &CL) | G2lib::ClothoidList | explicit |
| ClothoidList(PolyLine const &PL) | G2lib::ClothoidList | explicit |
| ClothoidList(G2solve2arc const &C, string const &name) | G2lib::ClothoidList | explicit |
| ClothoidList(G2solve3arc const &C, string const &name) | G2lib::ClothoidList | explicit |
| ClothoidList(G2solveCLC const &C, string const &name) | G2lib::ClothoidList | explicit |
| ClothoidList(BaseCurve const *pC) | G2lib::ClothoidList | explicit |
| collision(ClothoidList const &CL) const | G2lib::ClothoidList | inline |
| collision(BaseCurve const *pC) const override | G2lib::ClothoidList | virtual |
| collision_ISO(real_type offs, ClothoidList const &CL, real_type offs_C) const | G2lib::ClothoidList | |
| collision_ISO(real_type offs, BaseCurve const *pC, real_type offs_C) const override | G2lib::ClothoidList | virtual |
| collision_SAE(real_type offs, BaseCurve const *pC, real_type offs_C) const | G2lib::BaseCurve | inline |
| copy(ClothoidList const &L) | G2lib::ClothoidList | |
| distance(real_type qx, real_type qy) const | G2lib::BaseCurve | inlinevirtual |
| distance_ISO(real_type qx, real_type qy, real_type offs) const | G2lib::ClothoidList | inline |
| distance_SAE(real_type qx, real_type qy, real_type offs) const | G2lib::ClothoidList | inline |
| eval(real_type s, real_type &x, real_type &y) const override | G2lib::ClothoidList | virtual |
| eval_D(real_type s, real_type &x_D, real_type &y_D) const override | G2lib::ClothoidList | virtual |
| eval_DD(real_type s, real_type &x_DD, real_type &y_DD) const override | G2lib::ClothoidList | virtual |
| eval_DDD(real_type s, real_type &x_DDD, real_type &y_DDD) const override | G2lib::ClothoidList | virtual |
| eval_ISO(real_type s, real_type offs, real_type &x, real_type &y) const override | G2lib::ClothoidList | virtual |
| eval_ISO_D(real_type s, real_type offs, real_type &x_D, real_type &y_D) const override | G2lib::ClothoidList | virtual |
| eval_ISO_DD(real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const override | G2lib::ClothoidList | virtual |
| eval_ISO_DDD(real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const override | G2lib::ClothoidList | virtual |
| eval_SAE(real_type s, real_type offs, real_type &x, real_type &y) const | G2lib::ClothoidList | inline |
| eval_SAE_D(real_type s, real_type offs, real_type &x_D, real_type &y_D) const | G2lib::ClothoidList | inline |
| eval_SAE_DD(real_type s, real_type offs, real_type &x_DD, real_type &y_DD) const | G2lib::ClothoidList | inline |
| eval_SAE_DDD(real_type s, real_type offs, real_type &x_DDD, real_type &y_DDD) const | G2lib::ClothoidList | inline |
| evaluate(real_type s, real_type &th, real_type &k, real_type &x, real_type &y) const override | G2lib::ClothoidList | virtual |
| evaluate_ISO(real_type s, real_type offs, real_type &th, real_type &k, real_type &x, real_type &y) const override | G2lib::ClothoidList | virtual |
| evaluate_SAE(real_type s, real_type offs, real_type &th, real_type &k, real_type &x, real_type &y) const | G2lib::ClothoidList | inlinevirtual |
| export_ruby(ostream_type &stream) const | G2lib::ClothoidList | |
| export_table(ostream_type &stream) const | G2lib::ClothoidList | |
| find_at_s(real_type &s) const | G2lib::ClothoidList | |
| findST1(real_type x, real_type y, real_type &s, real_type &t) const | G2lib::ClothoidList | |
| findST1(integer ibegin, integer iend, real_type x, real_type y, real_type &s, real_type &t) const | G2lib::ClothoidList | |
| findST_ISO(real_type x, real_type y, real_type &s, real_type &t) const | G2lib::BaseCurve | inline |
| findST_SAE(real_type x, real_type y, real_type &s, real_type &t) const | G2lib::BaseCurve | inline |
| get(integer idx) const | G2lib::ClothoidList | |
| get_at_s(real_type s) const | G2lib::ClothoidList | |
| get_delta_kappa(real_type deltaKappa[]) const (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| get_delta_theta(real_type delta_theta[]) const (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| get_SK(real_type s[], real_type kappa[]) const | G2lib::ClothoidList | |
| get_SK(vector< real_type > &s, vector< real_type > &kappa) const | G2lib::ClothoidList | inline |
| get_STK(real_type s[], real_type theta[], real_type kappa[]) const | G2lib::ClothoidList | |
| get_STK(vector< real_type > &s, vector< real_type > &theta, vector< real_type > &kappa) const | G2lib::ClothoidList | inline |
| get_XY(real_type x[], real_type y[]) const | G2lib::ClothoidList | |
| info() const (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| info(ostream_type &stream) const override | G2lib::ClothoidList | inlinevirtual |
| init() | G2lib::ClothoidList | |
| intersect(ClothoidList const &CL, IntersectList &ilist) const | G2lib::ClothoidList | inline |
| intersect(BaseCurve const *pC, IntersectList &ilist) const override | G2lib::ClothoidList | virtual |
| intersect_ISO(real_type offs, ClothoidList const &CL, real_type offs_obj, IntersectList &ilist) const | G2lib::ClothoidList | |
| intersect_ISO(real_type offs, BaseCurve const *pC, real_type offs_LS, IntersectList &ilist) const override | G2lib::ClothoidList | virtual |
| intersect_SAE(real_type offs, BaseCurve const *pC, real_type offs_C, IntersectList &ilist) const | G2lib::BaseCurve | inline |
| is_closed() const | G2lib::ClothoidList | inline |
| kappa(real_type s) const | G2lib::BaseCurve | inline |
| kappa_begin() const | G2lib::BaseCurve | inlinevirtual |
| kappa_D(real_type s) const | G2lib::BaseCurve | inline |
| kappa_DD(real_type s) const | G2lib::BaseCurve | inline |
| kappa_end() const | G2lib::BaseCurve | inlinevirtual |
| length() const override | G2lib::ClothoidList | virtual |
| length_ISO(real_type offs) const override | G2lib::ClothoidList | virtual |
| length_SAE(real_type offs) const | G2lib::BaseCurve | inline |
| load(istream_type &stream, real_type epsi=1e-8) | G2lib::ClothoidList | |
| make_closed() | G2lib::ClothoidList | inline |
| make_open() | G2lib::ClothoidList | inline |
| name() const (defined in G2lib::BaseCurve) | G2lib::BaseCurve | inline |
| nor_ISO(real_type s, real_type &nx, real_type &ny) const | G2lib::BaseCurve | inline |
| nor_ISO_D(real_type s, real_type &nx_D, real_type &ny_D) const | G2lib::BaseCurve | inline |
| nor_ISO_DD(real_type s, real_type &nx_DD, real_type &ny_DD) const | G2lib::BaseCurve | inline |
| nor_ISO_DDD(real_type s, real_type &nx_DDD, real_type &ny_DDD) const | G2lib::BaseCurve | inline |
| nor_SAE(real_type s, real_type &nx, real_type &ny) const | G2lib::BaseCurve | inline |
| nor_SAE_D(real_type s, real_type &nx_D, real_type &ny_D) const | G2lib::BaseCurve | inline |
| nor_SAE_DD(real_type s, real_type &nx_DD, real_type &ny_DD) const | G2lib::BaseCurve | inline |
| nor_SAE_DDD(real_type s, real_type &nx_DDD, real_type &ny_DDD) const | G2lib::BaseCurve | inline |
| num_segments() const | G2lib::ClothoidList | inline |
| nx_begin_ISO() const override | G2lib::ClothoidList | inlinevirtual |
| nx_begin_SAE() const | G2lib::ClothoidList | inline |
| nx_end_ISO() const override | G2lib::ClothoidList | inlinevirtual |
| nx_end_SAE() const | G2lib::ClothoidList | inline |
| nx_ISO(real_type s) const | G2lib::BaseCurve | inline |
| nx_ISO_D(real_type s) const | G2lib::BaseCurve | inline |
| nx_ISO_DD(real_type s) const | G2lib::BaseCurve | inline |
| nx_ISO_DDD(real_type s) const | G2lib::BaseCurve | inline |
| nx_SAE(real_type s) const | G2lib::BaseCurve | inline |
| nx_SAE_D(real_type s) const | G2lib::BaseCurve | inline |
| nx_SAE_DD(real_type s) const | G2lib::BaseCurve | inline |
| nx_SAE_DDD(real_type s) const | G2lib::BaseCurve | inline |
| ny_begin_ISO() const override | G2lib::ClothoidList | inlinevirtual |
| ny_begin_SAE() const | G2lib::ClothoidList | inline |
| ny_end_ISO() const override | G2lib::ClothoidList | inlinevirtual |
| ny_end_SAE() const | G2lib::ClothoidList | inline |
| ny_ISO(real_type s) const | G2lib::BaseCurve | inline |
| ny_ISO_D(real_type s) const | G2lib::BaseCurve | inline |
| ny_ISO_DD(real_type s) const | G2lib::BaseCurve | inline |
| ny_ISO_DDD(real_type s) const | G2lib::BaseCurve | inline |
| ny_SAE(real_type s) const | G2lib::BaseCurve | inline |
| ny_SAE_D(real_type s) const | G2lib::BaseCurve | inline |
| ny_SAE_DD(real_type s) const | G2lib::BaseCurve | inline |
| ny_SAE_DDD(real_type s) const | G2lib::BaseCurve | inline |
| operator<<(ostream_type &stream, ClothoidList const &CL) | G2lib::ClothoidList | friend |
| operator=(ClothoidList const &s) | G2lib::ClothoidList | inline |
| operator=(BaseCurve const &)=delete (defined in G2lib::BaseCurve) | G2lib::BaseCurve | |
| push_back(LineSegment const &c) | G2lib::ClothoidList | |
| push_back(CircleArc const &c) | G2lib::ClothoidList | |
| push_back(Biarc const &c) | G2lib::ClothoidList | |
| push_back(BiarcList const &c) | G2lib::ClothoidList | |
| push_back(ClothoidCurve const &c) | G2lib::ClothoidList | |
| push_back(ClothoidList const &c) | G2lib::ClothoidList | |
| push_back(Dubins const &c) | G2lib::ClothoidList | |
| push_back(Dubins3p const &c) | G2lib::ClothoidList | |
| push_back(G2solve2arc const &c) | G2lib::ClothoidList | |
| push_back(G2solve3arc const &c) | G2lib::ClothoidList | |
| push_back(G2solveCLC const &c) | G2lib::ClothoidList | |
| push_back(PolyLine const &c) | G2lib::ClothoidList | |
| push_back(real_type kappa0, real_type dkappa, real_type L) | G2lib::ClothoidList | |
| push_back(real_type x0, real_type y0, real_type theta0, real_type kappa0, real_type dkappa, real_type L) | G2lib::ClothoidList | |
| push_back_G1(real_type x1, real_type y1, real_type theta1) | G2lib::ClothoidList | |
| push_back_G1(real_type x0, real_type y0, real_type theta0, real_type x1, real_type y1, real_type theta1) | G2lib::ClothoidList | |
| reserve(integer n) | G2lib::ClothoidList | |
| reverse() override | G2lib::ClothoidList | virtual |
| rotate(real_type angle, real_type cx, real_type cy) override | G2lib::ClothoidList | virtual |
| save(ostream_type &stream) const | G2lib::ClothoidList | |
| scale(real_type sc) override | G2lib::ClothoidList | virtual |
| segment_length(integer nseg) const | G2lib::ClothoidList | |
| segment_length_ISO(integer nseg, real_type offs) const | G2lib::ClothoidList | |
| segment_length_SAE(integer nseg, real_type offs) const | G2lib::ClothoidList | inline |
| setup(GenericContainer const &gc) override (defined in G2lib::ClothoidList) | G2lib::ClothoidList | virtual |
| tg(real_type s, real_type &tg_x, real_type &tg_y) const override | G2lib::ClothoidList | virtual |
| tg_D(real_type s, real_type &tg_x_D, real_type &tg_y_D) const override | G2lib::ClothoidList | virtual |
| tg_DD(real_type s, real_type &tg_x_DD, real_type &tg_y_DD) const override | G2lib::ClothoidList | virtual |
| tg_DDD(real_type s, real_type &tg_x_DDD, real_type &tg_y_DDD) const override | G2lib::ClothoidList | virtual |
| theta(real_type s) const override | G2lib::ClothoidList | virtual |
| theta_begin() const override | G2lib::ClothoidList | inlinevirtual |
| theta_D(real_type s) const override | G2lib::ClothoidList | virtual |
| theta_DD(real_type s) const override | G2lib::ClothoidList | virtual |
| theta_DDD(real_type s) const override | G2lib::ClothoidList | virtual |
| theta_end() const override | G2lib::ClothoidList | inlinevirtual |
| translate(real_type tx, real_type ty) override | G2lib::ClothoidList | virtual |
| trim(real_type s_begin, real_type s_end) override | G2lib::ClothoidList | virtual |
| trim(real_type s_begin, real_type s_end, ClothoidList &newCL) const (defined in G2lib::ClothoidList) | G2lib::ClothoidList | |
| tx(real_type s) const override | G2lib::ClothoidList | virtual |
| tx_begin() const override | G2lib::ClothoidList | inlinevirtual |
| tx_D(real_type s) const override | G2lib::ClothoidList | virtual |
| tx_DD(real_type s) const override | G2lib::ClothoidList | virtual |
| tx_DDD(real_type s) const override | G2lib::ClothoidList | virtual |
| tx_end() const override | G2lib::ClothoidList | inlinevirtual |
| ty(real_type s) const override | G2lib::ClothoidList | virtual |
| ty_begin() const override | G2lib::ClothoidList | inlinevirtual |
| ty_D(real_type s) const override | G2lib::ClothoidList | virtual |
| ty_DD(real_type s) const override | G2lib::ClothoidList | virtual |
| ty_DDD(real_type s) const override | G2lib::ClothoidList | virtual |
| ty_end() const override | G2lib::ClothoidList | inlinevirtual |
| type() const override | G2lib::ClothoidList | inlinevirtual |
| type_name() const (defined in G2lib::BaseCurve) | G2lib::BaseCurve | inline |
| wrap_in_range(real_type &s) const | G2lib::ClothoidList | |
| X(real_type s) const override | G2lib::ClothoidList | virtual |
| x_begin() const override | G2lib::ClothoidList | inlinevirtual |
| x_begin_ISO(real_type offs) const override | G2lib::ClothoidList | inlinevirtual |
| x_begin_SAE(real_type offs) const | G2lib::ClothoidList | inline |
| X_D(real_type s) const override | G2lib::ClothoidList | virtual |
| X_DD(real_type s) const override | G2lib::ClothoidList | virtual |
| X_DDD(real_type s) const override | G2lib::ClothoidList | virtual |
| x_end() const override | G2lib::ClothoidList | inlinevirtual |
| x_end_ISO(real_type offs) const override | G2lib::ClothoidList | inlinevirtual |
| x_end_SAE(real_type offs) const | G2lib::ClothoidList | inline |
| X_ISO(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| X_ISO_D(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| X_ISO_DD(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| X_ISO_DDD(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| X_SAE(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| X_SAE_D(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| X_SAE_DD(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| X_SAE_DDD(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| Y(real_type s) const override | G2lib::ClothoidList | virtual |
| y_begin() const override | G2lib::ClothoidList | inlinevirtual |
| y_begin_ISO(real_type offs) const override | G2lib::ClothoidList | inlinevirtual |
| y_begin_SAE(real_type offs) const | G2lib::ClothoidList | inline |
| Y_D(real_type s) const override | G2lib::ClothoidList | virtual |
| Y_DD(real_type s) const override | G2lib::ClothoidList | virtual |
| Y_DDD(real_type s) const override | G2lib::ClothoidList | virtual |
| y_end() const override | G2lib::ClothoidList | inlinevirtual |
| y_end_ISO(real_type offs) const override | G2lib::ClothoidList | inlinevirtual |
| y_end_SAE(real_type offs) const | G2lib::ClothoidList | inline |
| Y_ISO(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| Y_ISO_D(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| Y_ISO_DD(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| Y_ISO_DDD(real_type s, real_type offs) const override | G2lib::ClothoidList | virtual |
| Y_SAE(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| Y_SAE_D(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| Y_SAE_DD(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| Y_SAE_DDD(real_type s, real_type offs) const | G2lib::ClothoidList | inline |
| ~BaseCurve()=default (defined in G2lib::BaseCurve) | G2lib::BaseCurve | virtual |
| ~ClothoidList() override (defined in G2lib::ClothoidList) | G2lib::ClothoidList | inline |
Generated by