Signature ========= .. cpp:class:: numpy::Signature numpy C++ class. Example ------- .. code-block:: cpp #include using namespace numpy; // Use Signature Signature obj; // ... operations ... Constructors ------------ .. list-table:: :widths: 55 25 20 :header-rows: 1 * - Signature - Location - Example * - ``Signature(const std::string &sig_str)`` - NP_VECTORIZE_TRAITS.H:219 - Other Methods ------------- .. list-table:: :widths: 40 20 15 25 :header-rows: 1 * - Signature - Return Type - Location - Example * - ``bool isValid()`` - bool - NP_VECTORIZE_TRAITS.H:221 - :ref:`View ` * - ``size_t numInputs()`` - size_t - NP_VECTORIZE_TRAITS.H:222 - :ref:`View ` * - ``size_t numOutputs()`` - size_t - NP_VECTORIZE_TRAITS.H:223 - :ref:`View ` Code Examples ------------- The following examples are extracted from the test suite. .. _example-signature-isvalid-0: .. dropdown:: isValid (np_test_1_all.cpp:15168) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 15158 :emphasize-lines: 11 } // Test 9: Signature parsing std::cout << "========= test_signature_parsing =======================" ; auto dot_product = [](double x, double y) { return x * y; }; auto vectorized_dot = numpy::vectorize(dot_product, "(n),(n)->()"); // Test that signature is parsed correctly auto info = vectorized_dot.getSignature(); std::cout << info.isValid() << "," << info.numInputs() << "," << info.numOutputs() << ""; bool test9_pass = info.isValid() && info.numInputs() == 2 && info.numOutputs() == 1; if (test9_pass) { // std::cout << "[OK] Signature parsing works correctly"; std::cout << " -> tests passed" << std::endl; } else { std::cout << "[FAIL] Signature parsing failed" << std::endl; errors++; } .. _example-signature-numinputs-1: .. dropdown:: numInputs (np_test_1_all.cpp:15168) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 15158 :emphasize-lines: 11 } // Test 9: Signature parsing std::cout << "========= test_signature_parsing =======================" ; auto dot_product = [](double x, double y) { return x * y; }; auto vectorized_dot = numpy::vectorize(dot_product, "(n),(n)->()"); // Test that signature is parsed correctly auto info = vectorized_dot.getSignature(); std::cout << info.isValid() << "," << info.numInputs() << "," << info.numOutputs() << ""; bool test9_pass = info.isValid() && info.numInputs() == 2 && info.numOutputs() == 1; if (test9_pass) { // std::cout << "[OK] Signature parsing works correctly"; std::cout << " -> tests passed" << std::endl; } else { std::cout << "[FAIL] Signature parsing failed" << std::endl; errors++; } .. _example-signature-numoutputs-2: .. dropdown:: numOutputs (np_test_1_all.cpp:15168) :class-title: example-dropdown .. code-block:: cpp :linenos: :lineno-start: 15158 :emphasize-lines: 11 } // Test 9: Signature parsing std::cout << "========= test_signature_parsing =======================" ; auto dot_product = [](double x, double y) { return x * y; }; auto vectorized_dot = numpy::vectorize(dot_product, "(n),(n)->()"); // Test that signature is parsed correctly auto info = vectorized_dot.getSignature(); std::cout << info.isValid() << "," << info.numInputs() << "," << info.numOutputs() << ""; bool test9_pass = info.isValid() && info.numInputs() == 2 && info.numOutputs() == 1; if (test9_pass) { // std::cout << "[OK] Signature parsing works correctly"; std::cout << " -> tests passed" << std::endl; } else { std::cout << "[FAIL] Signature parsing failed" << std::endl; errors++; }