/*
 * Copyright 2012 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#include "tests/PathOpsTestCommon.h"

#include <cstddef>

extern const QuadPts quadraticLines[];
extern const QuadPts quadraticPoints[];
extern const QuadPts quadraticModEpsilonLines[];
extern const QuadPts quadraticTests[][2];

extern const size_t quadraticLines_count;
extern const size_t quadraticPoints_count;
extern const size_t quadraticModEpsilonLines_count;
extern const size_t quadraticTests_count;
