%% About definecppUseCases.mlx
% This file defines the MATLAB interface to the library cppUseCases.
% Commented sections represent C++ functionality that MATLAB cannot automatically define. To include functionality, uncomment a section and provide values for <SHAPE>, <DIRECTION>, etc. For more information, see Define MATLAB Interface for C++ Library.
%% Setup. Do not edit this section.

function libDef = definecppUseCases()
libDef = clibgen.LibraryDefinition("cppUseCasesData.xml");

%% OutputFolder and Libraries

libDef.OutputFolder = "\\fs-55-ah\vmgr$\home05\hhowell\Documents\MATLAB\Examples\matlab-ex85788383";
libDef.Libraries = "";

%% C++ class templClass<int> with MATLAB name clib.cppUseCases.templClass_int_

templClass_int_Definition = addClass(libDef, "templClass<int>", "MATLABName", "clib.cppUseCases.templClass_int_", ...
    "Description", "clib.cppUseCases.templClass_int_    Representation of C++ class templClass<int>."); % Modify help description values as needed.

%% C++ class constructor for C++ class templClass<int>
% C++ Signature: templClass<int>::templClass()

templClass_int_Constructor1Definition = addConstructor(templClass_int_Definition, ...
    "templClass<int>::templClass()", ...
    "Description", "clib.cppUseCases.templClass_int_    Constructor of C++ class templClass<int>."); % Modify help description values as needed.
validate(templClass_int_Constructor1Definition);

%% C++ class constructor for C++ class templClass<int>
% C++ Signature: templClass<int>::templClass(templClass<int> const & input1)

templClass_int_Constructor2Definition = addConstructor(templClass_int_Definition, ...
    "templClass<int>::templClass(templClass<int> const & input1)", ...
    "Description", "clib.cppUseCases.templClass_int_    Constructor of C++ class templClass<int>."); % Modify help description values as needed.
defineArgument(templClass_int_Constructor2Definition, "input1", "clib.cppUseCases.templClass_int_", "input");
validate(templClass_int_Constructor2Definition);

%% C++ class templClass<double> with MATLAB name clib.cppUseCases.templClass_double_

templClass_double_Definition = addClass(libDef, "templClass<double>", "MATLABName", "clib.cppUseCases.templClass_double_", ...
    "Description", "clib.cppUseCases.templClass_double_    Representation of C++ class templClass<double>."); % Modify help description values as needed.

%% C++ class constructor for C++ class templClass<double>
% C++ Signature: templClass<double>::templClass()

templClass_double_Constructor1Definition = addConstructor(templClass_double_Definition, ...
    "templClass<double>::templClass()", ...
    "Description", "clib.cppUseCases.templClass_double_    Constructor of C++ class templClass<double>."); % Modify help description values as needed.
validate(templClass_double_Constructor1Definition);

%% C++ class constructor for C++ class templClass<double>
% C++ Signature: templClass<double>::templClass(templClass<double> const & input1)

templClass_double_Constructor2Definition = addConstructor(templClass_double_Definition, ...
    "templClass<double>::templClass(templClass<double> const & input1)", ...
    "Description", "clib.cppUseCases.templClass_double_    Constructor of C++ class templClass<double>."); % Modify help description values as needed.
defineArgument(templClass_double_Constructor2Definition, "input1", "clib.cppUseCases.templClass_double_", "input");
validate(templClass_double_Constructor2Definition);

%% C++ class my_int_array<4> with MATLAB name clib.cppUseCases.my_int_array_4_

my_int_array_4_Definition = addClass(libDef, "my_int_array<4>", "MATLABName", "clib.cppUseCases.my_int_array_4_", ...
    "Description", "clib.cppUseCases.my_int_array_4_    Representation of C++ class my_int_array<4>."); % Modify help description values as needed.

%% C++ class constructor for C++ class my_int_array<4>
% C++ Signature: my_int_array<4>::my_int_array()

my_int_array_4_Constructor1Definition = addConstructor(my_int_array_4_Definition, ...
    "my_int_array<4>::my_int_array()", ...
    "Description", "clib.cppUseCases.my_int_array_4_    Constructor of C++ class my_int_array<4>."); % Modify help description values as needed.
validate(my_int_array_4_Constructor1Definition);

%% C++ class constructor for C++ class my_int_array<4>
% C++ Signature: my_int_array<4>::my_int_array(my_int_array<4> const & input1)

my_int_array_4_Constructor2Definition = addConstructor(my_int_array_4_Definition, ...
    "my_int_array<4>::my_int_array(my_int_array<4> const & input1)", ...
    "Description", "clib.cppUseCases.my_int_array_4_    Constructor of C++ class my_int_array<4>."); % Modify help description values as needed.
defineArgument(my_int_array_4_Constructor2Definition, "input1", "clib.cppUseCases.my_int_array_4_", "input");
validate(my_int_array_4_Constructor2Definition);

%% C++ class public data member arr for C++ class my_int_array<4>
% C++ Signature: int [4] my_int_array<4>::arr

addProperty(my_int_array_4_Definition, "arr", "clib.array.cppUseCases.Int", [4], ... % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
    "Description", "clib.array.cppUseCases.Int    Data member of C++ class my_int_array<4>."); % Modify help description values as needed.

%% C++ function getMyEnum1Copy with MATLAB name clib.cppUseCases.getMyEnum1Copy
% C++ Signature: ns::MyEnum1 getMyEnum1Copy(ns::MyEnum1 en)

getMyEnum1CopyDefinition = addFunction(libDef, ...
    "ns::MyEnum1 getMyEnum1Copy(ns::MyEnum1 en)", ...
    "MATLABName", "clib.cppUseCases.getMyEnum1Copy", ...
    "Description", "clib.cppUseCases.getMyEnum1Copy    Representation of C++ function getMyEnum1Copy."); % Modify help description values as needed.
defineArgument(getMyEnum1CopyDefinition, "en", "clib.cppUseCases.ns.MyEnum1");
defineOutput(getMyEnum1CopyDefinition, "RetVal", "clib.cppUseCases.ns.MyEnum1");
validate(getMyEnum1CopyDefinition);

%% C++ function getMyClass1Copy with MATLAB name clib.cppUseCases.getMyClass1Copy
% C++ Signature: ns::MyClass1 getMyClass1Copy(ns::MyClass1 myc1)

getMyClass1CopyDefinition = addFunction(libDef, ...
    "ns::MyClass1 getMyClass1Copy(ns::MyClass1 myc1)", ...
    "MATLABName", "clib.cppUseCases.getMyClass1Copy", ...
    "Description", "clib.cppUseCases.getMyClass1Copy    Representation of C++ function getMyClass1Copy."); % Modify help description values as needed.
defineArgument(getMyClass1CopyDefinition, "myc1", "clib.cppUseCases.ns.clsData");
defineOutput(getMyClass1CopyDefinition, "RetVal", "clib.cppUseCases.ns.clsData");
validate(getMyClass1CopyDefinition);

%% C++ function addClassByPtr with MATLAB name clib.cppUseCases.addClassByPtr
% C++ Signature: double addClassByPtr(ns::MyClass2 const * myc2)

%addClassByPtrDefinition = addFunction(libDef, ...
%    "double addClassByPtr(ns::MyClass2 const * myc2)", ...
%    "MATLABName", "clib.cppUseCases.addClassByPtr", ...
%    "Description", "clib.cppUseCases.addClassByPtr    Representation of C++ function addClassByPtr."); % Modify help description values as needed.
%defineArgument(addClassByPtrDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input", <SHAPE>); % '<MLTYPE>' can be clib.cppUseCases.ns.MyClass2, or clib.array.cppUseCases.ns.MyClass2
%defineOutput(addClassByPtrDefinition, "RetVal", "double");
%validate(addClassByPtrDefinition);

%% C++ function addClassByRef with MATLAB name clib.cppUseCases.addClassByRef
% C++ Signature: double addClassByRef(ns::MyClass2 const & myc2)

addClassByRefDefinition = addFunction(libDef, ...
    "double addClassByRef(ns::MyClass2 const & myc2)", ...
    "MATLABName", "clib.cppUseCases.addClassByRef", ...
    "Description", "clib.cppUseCases.addClassByRef    Representation of C++ function addClassByRef."); % Modify help description values as needed.
defineArgument(addClassByRefDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input");
defineOutput(addClassByRefDefinition, "RetVal", "double");
validate(addClassByRefDefinition);

%% C++ function updateClassByPtr with MATLAB name clib.cppUseCases.updateClassByPtr
% C++ Signature: void updateClassByPtr(ns::MyClass2 * myc2,double a,short b,long c)

%updateClassByPtrDefinition = addFunction(libDef, ...
%    "void updateClassByPtr(ns::MyClass2 * myc2,double a,short b,long c)", ...
%    "MATLABName", "clib.cppUseCases.updateClassByPtr", ...
%    "Description", "clib.cppUseCases.updateClassByPtr    Representation of C++ function updateClassByPtr."); % Modify help description values as needed.
%defineArgument(updateClassByPtrDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input", <SHAPE>); % '<MLTYPE>' can be clib.cppUseCases.ns.MyClass2, or clib.array.cppUseCases.ns.MyClass2
%defineArgument(updateClassByPtrDefinition, "a", "double");
%defineArgument(updateClassByPtrDefinition, "b", "int16");
%defineArgument(updateClassByPtrDefinition, "c", "int32");
%validate(updateClassByPtrDefinition);

%% C++ function updateClassByRef with MATLAB name clib.cppUseCases.updateClassByRef
% C++ Signature: void updateClassByRef(ns::MyClass2 & myc2,double a,short b,long c)

updateClassByRefDefinition = addFunction(libDef, ...
    "void updateClassByRef(ns::MyClass2 & myc2,double a,short b,long c)", ...
    "MATLABName", "clib.cppUseCases.updateClassByRef", ...
    "Description", "clib.cppUseCases.updateClassByRef    Representation of C++ function updateClassByRef."); % Modify help description values as needed.
defineArgument(updateClassByRefDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input");
defineArgument(updateClassByRefDefinition, "a", "double");
defineArgument(updateClassByRefDefinition, "b", "int16");
defineArgument(updateClassByRefDefinition, "c", "int32");
validate(updateClassByRefDefinition);

%% C++ function readClassByPtr with MATLAB name clib.cppUseCases.readClassByPtr
% C++ Signature: void readClassByPtr(ns::MyClass2 * myc2)

%readClassByPtrDefinition = addFunction(libDef, ...
%    "void readClassByPtr(ns::MyClass2 * myc2)", ...
%    "MATLABName", "clib.cppUseCases.readClassByPtr", ...
%    "Description", "clib.cppUseCases.readClassByPtr    Representation of C++ function readClassByPtr."); % Modify help description values as needed.
%defineArgument(readClassByPtrDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input", <SHAPE>); % '<MLTYPE>' can be clib.cppUseCases.ns.MyClass2, or clib.array.cppUseCases.ns.MyClass2
%validate(readClassByPtrDefinition);

%% C++ function readClassByRef with MATLAB name clib.cppUseCases.readClassByRef
% C++ Signature: void readClassByRef(ns::MyClass2 & myc2)

readClassByRefDefinition = addFunction(libDef, ...
    "void readClassByRef(ns::MyClass2 & myc2)", ...
    "MATLABName", "clib.cppUseCases.readClassByRef", ...
    "Description", "clib.cppUseCases.readClassByRef    Representation of C++ function readClassByRef."); % Modify help description values as needed.
defineArgument(readClassByRefDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input");
validate(readClassByRefDefinition);

%% C++ function fillClassByPtr with MATLAB name clib.cppUseCases.fillClassByPtr
% C++ Signature: void fillClassByPtr(ns::MyClass2 * myc2,double a,short b,long c)

%fillClassByPtrDefinition = addFunction(libDef, ...
%    "void fillClassByPtr(ns::MyClass2 * myc2,double a,short b,long c)", ...
%    "MATLABName", "clib.cppUseCases.fillClassByPtr", ...
%    "Description", "clib.cppUseCases.fillClassByPtr    Representation of C++ function fillClassByPtr."); % Modify help description values as needed.
%defineArgument(fillClassByPtrDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input", <SHAPE>); % '<MLTYPE>' can be clib.cppUseCases.ns.MyClass2, or clib.array.cppUseCases.ns.MyClass2
%defineArgument(fillClassByPtrDefinition, "a", "double");
%defineArgument(fillClassByPtrDefinition, "b", "int16");
%defineArgument(fillClassByPtrDefinition, "c", "int32");
%validate(fillClassByPtrDefinition);

%% C++ function fillClassByRef with MATLAB name clib.cppUseCases.fillClassByRef
% C++ Signature: void fillClassByRef(ns::MyClass2 & myc2,double a,short b,long c)

fillClassByRefDefinition = addFunction(libDef, ...
    "void fillClassByRef(ns::MyClass2 & myc2,double a,short b,long c)", ...
    "MATLABName", "clib.cppUseCases.fillClassByRef", ...
    "Description", "clib.cppUseCases.fillClassByRef    Representation of C++ function fillClassByRef."); % Modify help description values as needed.
defineArgument(fillClassByRefDefinition, "myc2", "clib.cppUseCases.ns.MyClass2", "input");
defineArgument(fillClassByRefDefinition, "a", "double");
defineArgument(fillClassByRefDefinition, "b", "int16");
defineArgument(fillClassByRefDefinition, "c", "int32");
validate(fillClassByRefDefinition);

%% C++ function readScalarPtr with MATLAB name clib.cppUseCases.readScalarPtr
% C++ Signature: void readScalarPtr(int const * in)

%readScalarPtrDefinition = addFunction(libDef, ...
%    "void readScalarPtr(int const * in)", ...
%    "MATLABName", "clib.cppUseCases.readScalarPtr", ...
%    "Description", "clib.cppUseCases.readScalarPtr    Representation of C++ function readScalarPtr."); % Modify help description values as needed.
%defineArgument(readScalarPtrDefinition, "in", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%validate(readScalarPtrDefinition);

%% C++ function readScalarPtr with MATLAB name clib.cppUseCases.readScalarPtr
% C++ Signature: void readScalarPtr(ns::MyClass2 const * in)

%readScalarPtrDefinition = addFunction(libDef, ...
%    "void readScalarPtr(ns::MyClass2 const * in)", ...
%    "MATLABName", "clib.cppUseCases.readScalarPtr", ...
%    "Description", "clib.cppUseCases.readScalarPtr    Representation of C++ function readScalarPtr."); % Modify help description values as needed.
%defineArgument(readScalarPtrDefinition, "in", "clib.cppUseCases.ns.MyClass2", "input", <SHAPE>); % '<MLTYPE>' can be clib.cppUseCases.ns.MyClass2, or clib.array.cppUseCases.ns.MyClass2
%validate(readScalarPtrDefinition);

%% C++ function readMatrix1DPtr with MATLAB name clib.cppUseCases.readMatrix1DPtr
% C++ Signature: void readMatrix1DPtr(int const * mat,size_t m)

%readMatrix1DPtrDefinition = addFunction(libDef, ...
%    "void readMatrix1DPtr(int const * mat,size_t m)", ...
%    "MATLABName", "clib.cppUseCases.readMatrix1DPtr", ...
%    "Description", "clib.cppUseCases.readMatrix1DPtr    Representation of C++ function readMatrix1DPtr."); % Modify help description values as needed.
%defineArgument(readMatrix1DPtrDefinition, "mat", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%defineArgument(readMatrix1DPtrDefinition, "m", "uint64");
%validate(readMatrix1DPtrDefinition);

%% C++ function readMatrix1DPtrFixedSize with MATLAB name clib.cppUseCases.readMatrix1DPtrFixedSize
% C++ Signature: void readMatrix1DPtrFixedSize(int const * mat)

%readMatrix1DPtrFixedSizeDefinition = addFunction(libDef, ...
%    "void readMatrix1DPtrFixedSize(int const * mat)", ...
%    "MATLABName", "clib.cppUseCases.readMatrix1DPtrFixedSize", ...
%    "Description", "clib.cppUseCases.readMatrix1DPtrFixedSize    Representation of C++ function readMatrix1DPtrFixedSize."); % Modify help description values as needed.
%defineArgument(readMatrix1DPtrFixedSizeDefinition, "mat", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%validate(readMatrix1DPtrFixedSizeDefinition);

%% C++ function readMatrix2DPtr with MATLAB name clib.cppUseCases.readMatrix2DPtr
% C++ Signature: void readMatrix2DPtr(int const * mat,size_t m,size_t n)

%readMatrix2DPtrDefinition = addFunction(libDef, ...
%    "void readMatrix2DPtr(int const * mat,size_t m,size_t n)", ...
%    "MATLABName", "clib.cppUseCases.readMatrix2DPtr", ...
%    "Description", "clib.cppUseCases.readMatrix2DPtr    Representation of C++ function readMatrix2DPtr."); % Modify help description values as needed.
%defineArgument(readMatrix2DPtrDefinition, "mat", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%defineArgument(readMatrix2DPtrDefinition, "m", "uint64");
%defineArgument(readMatrix2DPtrDefinition, "n", "uint64");
%validate(readMatrix2DPtrDefinition);

%% C++ function readMatrix2DPtrFixedSize with MATLAB name clib.cppUseCases.readMatrix2DPtrFixedSize
% C++ Signature: void readMatrix2DPtrFixedSize(int const * mat)

%readMatrix2DPtrFixedSizeDefinition = addFunction(libDef, ...
%    "void readMatrix2DPtrFixedSize(int const * mat)", ...
%    "MATLABName", "clib.cppUseCases.readMatrix2DPtrFixedSize", ...
%    "Description", "clib.cppUseCases.readMatrix2DPtrFixedSize    Representation of C++ function readMatrix2DPtrFixedSize."); % Modify help description values as needed.
%defineArgument(readMatrix2DPtrFixedSizeDefinition, "mat", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%validate(readMatrix2DPtrFixedSizeDefinition);

%% C++ function readMatrix3DPtr with MATLAB name clib.cppUseCases.readMatrix3DPtr
% C++ Signature: void readMatrix3DPtr(int const * mat,size_t m,size_t n,size_t p)

%readMatrix3DPtrDefinition = addFunction(libDef, ...
%    "void readMatrix3DPtr(int const * mat,size_t m,size_t n,size_t p)", ...
%    "MATLABName", "clib.cppUseCases.readMatrix3DPtr", ...
%    "Description", "clib.cppUseCases.readMatrix3DPtr    Representation of C++ function readMatrix3DPtr."); % Modify help description values as needed.
%defineArgument(readMatrix3DPtrDefinition, "mat", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%defineArgument(readMatrix3DPtrDefinition, "m", "uint64");
%defineArgument(readMatrix3DPtrDefinition, "n", "uint64");
%defineArgument(readMatrix3DPtrDefinition, "p", "uint64");
%validate(readMatrix3DPtrDefinition);

%% C++ function readMatrix1DFixedArr with MATLAB name clib.cppUseCases.readMatrix1DFixedArr
% C++ Signature: void readMatrix1DFixedArr(int const [5] mat)

readMatrix1DFixedArrDefinition = addFunction(libDef, ...
    "void readMatrix1DFixedArr(int const [5] mat)", ...
    "MATLABName", "clib.cppUseCases.readMatrix1DFixedArr", ...
    "Description", "clib.cppUseCases.readMatrix1DFixedArr    Representation of C++ function readMatrix1DFixedArr."); % Modify help description values as needed.
defineArgument(readMatrix1DFixedArrDefinition, "mat", "clib.array.cppUseCases.Int", "input", [5]);
validate(readMatrix1DFixedArrDefinition);

%% C++ function readMatrix2DFixedArr with MATLAB name clib.cppUseCases.readMatrix2DFixedArr
% C++ Signature: void readMatrix2DFixedArr(int const [5][5] mat)

readMatrix2DFixedArrDefinition = addFunction(libDef, ...
    "void readMatrix2DFixedArr(int const [5][5] mat)", ...
    "MATLABName", "clib.cppUseCases.readMatrix2DFixedArr", ...
    "Description", "clib.cppUseCases.readMatrix2DFixedArr    Representation of C++ function readMatrix2DFixedArr."); % Modify help description values as needed.
defineArgument(readMatrix2DFixedArrDefinition, "mat", "clib.array.cppUseCases.Int", "input", [5,5]);
validate(readMatrix2DFixedArrDefinition);

%% C++ function readMatrix3DFixedArr with MATLAB name clib.cppUseCases.readMatrix3DFixedArr
% C++ Signature: void readMatrix3DFixedArr(int const [5][5][5] mat)

readMatrix3DFixedArrDefinition = addFunction(libDef, ...
    "void readMatrix3DFixedArr(int const [5][5][5] mat)", ...
    "MATLABName", "clib.cppUseCases.readMatrix3DFixedArr", ...
    "Description", "clib.cppUseCases.readMatrix3DFixedArr    Representation of C++ function readMatrix3DFixedArr."); % Modify help description values as needed.
defineArgument(readMatrix3DFixedArrDefinition, "mat", "clib.array.cppUseCases.Int", "input", [5,5,5]);
validate(readMatrix3DFixedArrDefinition);

%% C++ function readMatrix1DArr with MATLAB name clib.cppUseCases.readMatrix1DArr
% C++ Signature: void readMatrix1DArr(int const [] mat,size_t len)

%readMatrix1DArrDefinition = addFunction(libDef, ...
%    "void readMatrix1DArr(int const [] mat,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.readMatrix1DArr", ...
%    "Description", "clib.cppUseCases.readMatrix1DArr    Representation of C++ function readMatrix1DArr."); % Modify help description values as needed.
%defineArgument(readMatrix1DArrDefinition, "mat", "clib.array.cppUseCases.Int", "input", <SHAPE>);
%defineArgument(readMatrix1DArrDefinition, "len", "uint64");
%validate(readMatrix1DArrDefinition);

%% C++ function getRandomValues with MATLAB name clib.cppUseCases.getRandomValues
% C++ Signature: int const * getRandomValues(size_t len)

%getRandomValuesDefinition = addFunction(libDef, ...
%    "int const * getRandomValues(size_t len)", ...
%    "MATLABName", "clib.cppUseCases.getRandomValues", ...
%    "Description", "clib.cppUseCases.getRandomValues    Representation of C++ function getRandomValues."); % Modify help description values as needed.
%defineArgument(getRandomValuesDefinition, "len", "uint64");
%defineOutput(getRandomValuesDefinition, "RetVal", "clib.array.cppUseCases.Int", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%validate(getRandomValuesDefinition);

%% C++ function getRandomValuesFixedSize with MATLAB name clib.cppUseCases.getRandomValuesFixedSize
% C++ Signature: int const * getRandomValuesFixedSize()

%getRandomValuesFixedSizeDefinition = addFunction(libDef, ...
%    "int const * getRandomValuesFixedSize()", ...
%    "MATLABName", "clib.cppUseCases.getRandomValuesFixedSize", ...
%    "Description", "clib.cppUseCases.getRandomValuesFixedSize    Representation of C++ function getRandomValuesFixedSize."); % Modify help description values as needed.
%defineOutput(getRandomValuesFixedSizeDefinition, "RetVal", "clib.array.cppUseCases.Int", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%validate(getRandomValuesFixedSizeDefinition);

%% C++ function updateMatrix1DPtrByX with MATLAB name clib.cppUseCases.updateMatrix1DPtrByX
% C++ Signature: void updateMatrix1DPtrByX(int * mat,size_t len,int x)

%updateMatrix1DPtrByXDefinition = addFunction(libDef, ...
%    "void updateMatrix1DPtrByX(int * mat,size_t len,int x)", ...
%    "MATLABName", "clib.cppUseCases.updateMatrix1DPtrByX", ...
%    "Description", "clib.cppUseCases.updateMatrix1DPtrByX    Representation of C++ function updateMatrix1DPtrByX."); % Modify help description values as needed.
%defineArgument(updateMatrix1DPtrByXDefinition, "mat", "clib.array.cppUseCases.Int", "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%defineArgument(updateMatrix1DPtrByXDefinition, "len", "uint64");
%defineArgument(updateMatrix1DPtrByXDefinition, "x", "int32");
%validate(updateMatrix1DPtrByXDefinition);

%% C++ function updateMatrix1DArrByX with MATLAB name clib.cppUseCases.updateMatrix1DArrByX
% C++ Signature: void updateMatrix1DArrByX(int [] mat,size_t len,int x)

%updateMatrix1DArrByXDefinition = addFunction(libDef, ...
%    "void updateMatrix1DArrByX(int [] mat,size_t len,int x)", ...
%    "MATLABName", "clib.cppUseCases.updateMatrix1DArrByX", ...
%    "Description", "clib.cppUseCases.updateMatrix1DArrByX    Representation of C++ function updateMatrix1DArrByX."); % Modify help description values as needed.
%defineArgument(updateMatrix1DArrByXDefinition, "mat", "clib.array.cppUseCases.Int", "input", <SHAPE>);
%defineArgument(updateMatrix1DArrByXDefinition, "len", "uint64");
%defineArgument(updateMatrix1DArrByXDefinition, "x", "int32");
%validate(updateMatrix1DArrByXDefinition);

%% C++ function swap with MATLAB name clib.cppUseCases.swap
% C++ Signature: void swap(int & a,int & b)

swapDefinition = addFunction(libDef, ...
    "void swap(int & a,int & b)", ...
    "MATLABName", "clib.cppUseCases.swap", ...
    "Description", "clib.cppUseCases.swap    Representation of C++ function swap."); % Modify help description values as needed.
defineArgument(swapDefinition, "a", "int32", "inputoutput");
defineArgument(swapDefinition, "b", "int32", "inputoutput");
validate(swapDefinition);

%% C++ function addValuesByPtr with MATLAB name clib.cppUseCases.addValuesByPtr
% C++ Signature: int addValuesByPtr(int * mat,size_t len)

%addValuesByPtrDefinition = addFunction(libDef, ...
%    "int addValuesByPtr(int * mat,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.addValuesByPtr", ...
%    "Description", "clib.cppUseCases.addValuesByPtr    Representation of C++ function addValuesByPtr."); % Modify help description values as needed.
%defineArgument(addValuesByPtrDefinition, "mat", "clib.array.cppUseCases.Int", "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%defineArgument(addValuesByPtrDefinition, "len", "uint64");
%defineOutput(addValuesByPtrDefinition, "RetVal", "int32");
%validate(addValuesByPtrDefinition);

%% C++ function addValuesByArr with MATLAB name clib.cppUseCases.addValuesByArr
% C++ Signature: int addValuesByArr(int [] mat,size_t len)

%addValuesByArrDefinition = addFunction(libDef, ...
%    "int addValuesByArr(int [] mat,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.addValuesByArr", ...
%    "Description", "clib.cppUseCases.addValuesByArr    Representation of C++ function addValuesByArr."); % Modify help description values as needed.
%defineArgument(addValuesByArrDefinition, "mat", "clib.array.cppUseCases.Int", "input", <SHAPE>);
%defineArgument(addValuesByArrDefinition, "len", "uint64");
%defineOutput(addValuesByArrDefinition, "RetVal", "int32");
%validate(addValuesByArrDefinition);

%% C++ function readString with MATLAB name clib.cppUseCases.readString
% C++ Signature: void readString(std::string & str)

readStringDefinition = addFunction(libDef, ...
    "void readString(std::string & str)", ...
    "MATLABName", "clib.cppUseCases.readString", ...
    "Description", "clib.cppUseCases.readString    Representation of C++ function readString."); % Modify help description values as needed.
defineArgument(readStringDefinition, "str", "string", "inputoutput");
validate(readStringDefinition);

%% C++ function fillRandomValuesToPtr with MATLAB name clib.cppUseCases.fillRandomValuesToPtr
% C++ Signature: void fillRandomValuesToPtr(int * mat,size_t len)

%fillRandomValuesToPtrDefinition = addFunction(libDef, ...
%    "void fillRandomValuesToPtr(int * mat,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.fillRandomValuesToPtr", ...
%    "Description", "clib.cppUseCases.fillRandomValuesToPtr    Representation of C++ function fillRandomValuesToPtr."); % Modify help description values as needed.
%defineArgument(fillRandomValuesToPtrDefinition, "mat", "clib.array.cppUseCases.Int", "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Int, or int32
%defineArgument(fillRandomValuesToPtrDefinition, "len", "uint64");
%validate(fillRandomValuesToPtrDefinition);

%% C++ function fillRandomValuesToArr with MATLAB name clib.cppUseCases.fillRandomValuesToArr
% C++ Signature: void fillRandomValuesToArr(int [] mat,size_t len)

%fillRandomValuesToArrDefinition = addFunction(libDef, ...
%    "void fillRandomValuesToArr(int [] mat,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.fillRandomValuesToArr", ...
%    "Description", "clib.cppUseCases.fillRandomValuesToArr    Representation of C++ function fillRandomValuesToArr."); % Modify help description values as needed.
%defineArgument(fillRandomValuesToArrDefinition, "mat", "clib.array.cppUseCases.Int", "input", <SHAPE>);
%defineArgument(fillRandomValuesToArrDefinition, "len", "uint64");
%validate(fillRandomValuesToArrDefinition);

%% C++ function fillString with MATLAB name clib.cppUseCases.fillString
% C++ Signature: void fillString(std::string & str)

fillStringDefinition = addFunction(libDef, ...
    "void fillString(std::string & str)", ...
    "MATLABName", "clib.cppUseCases.fillString", ...
    "Description", "clib.cppUseCases.fillString    Representation of C++ function fillString."); % Modify help description values as needed.
defineArgument(fillStringDefinition, "str", "string", "inputoutput");
validate(fillStringDefinition);

%% C++ function getStringCopy with MATLAB name clib.cppUseCases.getStringCopy
% C++ Signature: char const * getStringCopy(char const * str)

%getStringCopyDefinition = addFunction(libDef, ...
%    "char const * getStringCopy(char const * str)", ...
%    "MATLABName", "clib.cppUseCases.getStringCopy", ...
%    "Description", "clib.cppUseCases.getStringCopy    Representation of C++ function getStringCopy."); % Modify help description values as needed.
%defineArgument(getStringCopyDefinition, "str", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Char,int8,string, or char
%defineOutput(getStringCopyDefinition, "RetVal", <MLTYPE>, <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Char,int8,string, or char
%validate(getStringCopyDefinition);

%% C++ function readCharArray with MATLAB name clib.cppUseCases.readCharArray
% C++ Signature: void readCharArray(char const * chArray,size_t len)

%readCharArrayDefinition = addFunction(libDef, ...
%    "void readCharArray(char const * chArray,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.readCharArray", ...
%    "Description", "clib.cppUseCases.readCharArray    Representation of C++ function readCharArray."); % Modify help description values as needed.
%defineArgument(readCharArrayDefinition, "chArray", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Char,int8,string, or char
%defineArgument(readCharArrayDefinition, "len", "uint64");
%validate(readCharArrayDefinition);

%% C++ function readInt8Array with MATLAB name clib.cppUseCases.readInt8Array
% C++ Signature: void readInt8Array(char const * int8Array,size_t len)

%readInt8ArrayDefinition = addFunction(libDef, ...
%    "void readInt8Array(char const * int8Array,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.readInt8Array", ...
%    "Description", "clib.cppUseCases.readInt8Array    Representation of C++ function readInt8Array."); % Modify help description values as needed.
%defineArgument(readInt8ArrayDefinition, "int8Array", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Char,int8,string, or char
%defineArgument(readInt8ArrayDefinition, "len", "uint64");
%validate(readInt8ArrayDefinition);

%% C++ function getRandomCharScalar with MATLAB name clib.cppUseCases.getRandomCharScalar
% C++ Signature: char const * getRandomCharScalar()

%getRandomCharScalarDefinition = addFunction(libDef, ...
%    "char const * getRandomCharScalar()", ...
%    "MATLABName", "clib.cppUseCases.getRandomCharScalar", ...
%    "Description", "clib.cppUseCases.getRandomCharScalar    Representation of C++ function getRandomCharScalar."); % Modify help description values as needed.
%defineOutput(getRandomCharScalarDefinition, "RetVal", <MLTYPE>, <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Char,int8,string, or char
%validate(getRandomCharScalarDefinition);

%% C++ function getRandomInt8Scalar with MATLAB name clib.cppUseCases.getRandomInt8Scalar
% C++ Signature: char const * getRandomInt8Scalar()

%getRandomInt8ScalarDefinition = addFunction(libDef, ...
%    "char const * getRandomInt8Scalar()", ...
%    "MATLABName", "clib.cppUseCases.getRandomInt8Scalar", ...
%    "Description", "clib.cppUseCases.getRandomInt8Scalar    Representation of C++ function getRandomInt8Scalar."); % Modify help description values as needed.
%defineOutput(getRandomInt8ScalarDefinition, "RetVal", <MLTYPE>, <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Char,int8,string, or char
%validate(getRandomInt8ScalarDefinition);

%% C++ function updateCharArray with MATLAB name clib.cppUseCases.updateCharArray
% C++ Signature: void updateCharArray(char * chArray,size_t len)

%updateCharArrayDefinition = addFunction(libDef, ...
%    "void updateCharArray(char * chArray,size_t len)", ...
%    "MATLABName", "clib.cppUseCases.updateCharArray", ...
%    "Description", "clib.cppUseCases.updateCharArray    Representation of C++ function updateCharArray."); % Modify help description values as needed.
%defineArgument(updateCharArrayDefinition, "chArray", <MLTYPE>, "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Char,int8,string, or char
%defineArgument(updateCharArrayDefinition, "len", "uint64");
%validate(updateCharArrayDefinition);

%% C++ function useTemplClass with MATLAB name clib.cppUseCases.useTemplClass
% C++ Signature: void useTemplClass(templClass<double> in)

useTemplClassDefinition = addFunction(libDef, ...
    "void useTemplClass(templClass<double> in)", ...
    "MATLABName", "clib.cppUseCases.useTemplClass", ...
    "Description", "clib.cppUseCases.useTemplClass    Representation of C++ function useTemplClass."); % Modify help description values as needed.
defineArgument(useTemplClassDefinition, "in", "clib.cppUseCases.templClass_double_");
validate(useTemplClassDefinition);

%% C++ function useTemplClassNonType with MATLAB name clib.cppUseCases.useTemplClassNonType
% C++ Signature: void useTemplClassNonType(my_int_array<4> intArr4)

useTemplClassNonTypeDefinition = addFunction(libDef, ...
    "void useTemplClassNonType(my_int_array<4> intArr4)", ...
    "MATLABName", "clib.cppUseCases.useTemplClassNonType", ...
    "Description", "clib.cppUseCases.useTemplClassNonType    Representation of C++ function useTemplClassNonType."); % Modify help description values as needed.
defineArgument(useTemplClassNonTypeDefinition, "intArr4", "clib.cppUseCases.my_int_array_4_");
validate(useTemplClassNonTypeDefinition);

%% C++ function useMixedTypes with MATLAB name clib.cppUseCases.useMixedTypes
% C++ Signature: void useMixedTypes(std::size_t input1,int16_t input2,uint64_t input3)

useMixedTypesDefinition = addFunction(libDef, ...
    "void useMixedTypes(std::size_t input1,int16_t input2,uint64_t input3)", ...
    "MATLABName", "clib.cppUseCases.useMixedTypes", ...
    "Description", "clib.cppUseCases.useMixedTypes    Representation of C++ function useMixedTypes."); % Modify help description values as needed.
defineArgument(useMixedTypesDefinition, "input1", "uint64");
defineArgument(useMixedTypesDefinition, "input2", "int16");
defineArgument(useMixedTypesDefinition, "input3", "uint64");
validate(useMixedTypesDefinition);

%% C++ function useTypedef with MATLAB name clib.cppUseCases.useTypedef
% C++ Signature: void useTypedef(intData input1)

useTypedefDefinition = addFunction(libDef, ...
    "void useTypedef(intData input1)", ...
    "MATLABName", "clib.cppUseCases.useTypedef", ...
    "Description", "clib.cppUseCases.useTypedef    Representation of C++ function useTypedef."); % Modify help description values as needed.
defineArgument(useTypedefDefinition, "input1", "int16");
validate(useTypedefDefinition);

%% C++ function useTypedefPtr with MATLAB name clib.cppUseCases.useTypedefPtr
% C++ Signature: void useTypedefPtr(intDataPtr input1)

%useTypedefPtrDefinition = addFunction(libDef, ...
%    "void useTypedefPtr(intDataPtr input1)", ...
%    "MATLABName", "clib.cppUseCases.useTypedefPtr", ...
%    "Description", "clib.cppUseCases.useTypedefPtr    Representation of C++ function useTypedefPtr."); % Modify help description values as needed.
%defineArgument(useTypedefPtrDefinition, "input1", "clib.array.cppUseCases.Short", "input", <SHAPE>); % '<MLTYPE>' can be clib.array.cppUseCases.Short, or int16
%validate(useTypedefPtrDefinition);

%% C++ function useTypedefToClass with MATLAB name clib.cppUseCases.useTypedefToClass
% C++ Signature: void useTypedefToClass(clsData input1)

useTypedefToClassDefinition = addFunction(libDef, ...
    "void useTypedefToClass(clsData input1)", ...
    "MATLABName", "clib.cppUseCases.useTypedefToClass", ...
    "Description", "clib.cppUseCases.useTypedefToClass    Representation of C++ function useTypedefToClass."); % Modify help description values as needed.
defineArgument(useTypedefToClassDefinition, "input1", "clib.cppUseCases.ns.clsData");
validate(useTypedefToClassDefinition);

%% C++ function useTypedefRef with MATLAB name clib.cppUseCases.useTypedefRef
% C++ Signature: void useTypedefRef(clsDataRef input1)

useTypedefRefDefinition = addFunction(libDef, ...
    "void useTypedefRef(clsDataRef input1)", ...
    "MATLABName", "clib.cppUseCases.useTypedefRef", ...
    "Description", "clib.cppUseCases.useTypedefRef    Representation of C++ function useTypedefRef."); % Modify help description values as needed.
defineArgument(useTypedefRefDefinition, "input1", "clib.cppUseCases.ns.clsData", "input");
validate(useTypedefRefDefinition);

%% C++ function useTypedefConstRef with MATLAB name clib.cppUseCases.useTypedefConstRef
% C++ Signature: void useTypedefConstRef(clsData const & input1)

useTypedefConstRefDefinition = addFunction(libDef, ...
    "void useTypedefConstRef(clsData const & input1)", ...
    "MATLABName", "clib.cppUseCases.useTypedefConstRef", ...
    "Description", "clib.cppUseCases.useTypedefConstRef    Representation of C++ function useTypedefConstRef."); % Modify help description values as needed.
defineArgument(useTypedefConstRefDefinition, "input1", "clib.cppUseCases.ns.clsData", "input");
validate(useTypedefConstRefDefinition);

%% C++ class ns::EmptyClass with MATLAB name clib.cppUseCases.ns.EmptyClass

EmptyClassDefinition = addClass(libDef, "ns::EmptyClass", "MATLABName", "clib.cppUseCases.ns.EmptyClass", ...
    "Description", "clib.cppUseCases.ns.EmptyClass    Representation of C++ class ns::EmptyClass."); % Modify help description values as needed.

%% C++ class constructor for C++ class ns::EmptyClass
% C++ Signature: ns::EmptyClass::EmptyClass()

EmptyClassConstructor1Definition = addConstructor(EmptyClassDefinition, ...
    "ns::EmptyClass::EmptyClass()", ...
    "Description", "clib.cppUseCases.ns.EmptyClass    Constructor of C++ class ns::EmptyClass."); % Modify help description values as needed.
validate(EmptyClassConstructor1Definition);

%% C++ class constructor for C++ class ns::EmptyClass
% C++ Signature: ns::EmptyClass::EmptyClass(ns::EmptyClass const & input1)

EmptyClassConstructor2Definition = addConstructor(EmptyClassDefinition, ...
    "ns::EmptyClass::EmptyClass(ns::EmptyClass const & input1)", ...
    "Description", "clib.cppUseCases.ns.EmptyClass    Constructor of C++ class ns::EmptyClass."); % Modify help description values as needed.
defineArgument(EmptyClassConstructor2Definition, "input1", "clib.cppUseCases.ns.EmptyClass", "input");
validate(EmptyClassConstructor2Definition);

%% C++ enumeration ns::MyEnum1 with MATLAB name clib.cppUseCases.ns.MyEnum1

addEnumeration(libDef, "ns::MyEnum1", "int32",...
    [...
      "en1",...  % 1
      "en2",...  % 2
      "en4",...  % 4
    ],...
    "MATLABName", "clib.cppUseCases.ns.MyEnum1", ...
    "Description", "clib.cppUseCases.ns.MyEnum1    Representation of C++ enumeration ns::MyEnum1."); % Modify help description values as needed.

%% C++ class ns::MyClass1 with MATLAB name clib.cppUseCases.ns.clsData

clsDataDefinition = addClass(libDef, "ns::MyClass1", "MATLABName", "clib.cppUseCases.ns.clsData", ...
    "Description", "clib.cppUseCases.ns.clsData    Representation of C++ class ns::MyClass1."); % Modify help description values as needed.

%% C++ class constructor for C++ class ns::MyClass1
% C++ Signature: ns::MyClass1::MyClass1()

clsDataConstructor1Definition = addConstructor(clsDataDefinition, ...
    "ns::MyClass1::MyClass1()", ...
    "Description", "clib.cppUseCases.ns.clsData.MyClass1    Constructor of C++ class ns::MyClass1."); % Modify help description values as needed.
validate(clsDataConstructor1Definition);

%% C++ class constructor for C++ class ns::MyClass1
% C++ Signature: ns::MyClass1::MyClass1(ns::MyClass1 const & myc1)

clsDataConstructor2Definition = addConstructor(clsDataDefinition, ...
    "ns::MyClass1::MyClass1(ns::MyClass1 const & myc1)", ...
    "Description", "clib.cppUseCases.ns.clsData.MyClass1    Constructor of C++ class ns::MyClass1."); % Modify help description values as needed.
defineArgument(clsDataConstructor2Definition, "myc1", "clib.cppUseCases.ns.clsData", "input");
validate(clsDataConstructor2Definition);

%% C++ class method setFundamentalProp for C++ class ns::MyClass1
% C++ Signature: void ns::MyClass1::setFundamentalProp(int const & fundProp)

setFundamentalPropDefinition = addMethod(clsDataDefinition, ...
    "void ns::MyClass1::setFundamentalProp(int const & fundProp)", ...
    "Description", "clib.cppUseCases.ns.clsData.setFundamentalProp    Method of C++ class ns::MyClass1."); % Modify help description values as needed.
defineArgument(setFundamentalPropDefinition, "fundProp", "int32", "input");
validate(setFundamentalPropDefinition);

%% C++ class public data member fundamentalProp for C++ class ns::MyClass1
% C++ Signature: int ns::MyClass1::fundamentalProp

addProperty(clsDataDefinition, "fundamentalProp", "int32", ...
    "Description", "int32    Data member of C++ class ns::MyClass1."); % Modify help description values as needed.

%% C++ class public data member constProp for C++ class ns::MyClass1
% C++ Signature: int const ns::MyClass1::constProp

addProperty(clsDataDefinition, "constProp", "int32", ...
    "Description", "int32    read-only Data member of C++ class ns::MyClass1."); % Modify help description values as needed.

%% C++ class public data member boolProp for C++ class ns::MyClass1
% C++ Signature: bool ns::MyClass1::boolProp

addProperty(clsDataDefinition, "boolProp", "logical", ...
    "Description", "logical    Data member of C++ class ns::MyClass1."); % Modify help description values as needed.

%% C++ class public data member strProp for C++ class ns::MyClass1
% C++ Signature: std::string ns::MyClass1::strProp

addProperty(clsDataDefinition, "strProp", "string", ...
    "Description", "string    Data member of C++ class ns::MyClass1."); % Modify help description values as needed.

%% C++ class public data member nonFundamentalProp for C++ class ns::MyClass1
% C++ Signature: ns::EmptyClass ns::MyClass1::nonFundamentalProp

addProperty(clsDataDefinition, "nonFundamentalProp", "clib.cppUseCases.ns.EmptyClass", ...
    "Description", "clib.cppUseCases.ns.EmptyClass    Data member of C++ class ns::MyClass1."); % Modify help description values as needed.

%% C++ class public data member enumProp for C++ class ns::MyClass1
% C++ Signature: ns::MyEnum1 ns::MyClass1::enumProp

addProperty(clsDataDefinition, "enumProp", "clib.cppUseCases.ns.MyEnum1", ...
    "Description", "clib.cppUseCases.ns.MyEnum1    Data member of C++ class ns::MyClass1."); % Modify help description values as needed.

%% C++ class ns::MyClass2 with MATLAB name clib.cppUseCases.ns.MyClass2

MyClass2Definition = addClass(libDef, "ns::MyClass2", "MATLABName", "clib.cppUseCases.ns.MyClass2", ...
    "Description", "clib.cppUseCases.ns.MyClass2    Representation of C++ class ns::MyClass2."); % Modify help description values as needed.

%% C++ class constructor for C++ class ns::MyClass2
% C++ Signature: ns::MyClass2::MyClass2()

MyClass2Constructor1Definition = addConstructor(MyClass2Definition, ...
    "ns::MyClass2::MyClass2()", ...
    "Description", "clib.cppUseCases.ns.MyClass2    Constructor of C++ class ns::MyClass2."); % Modify help description values as needed.
validate(MyClass2Constructor1Definition);

%% C++ class constructor for C++ class ns::MyClass2
% C++ Signature: ns::MyClass2::MyClass2(ns::MyClass2 const & input1)

MyClass2Constructor2Definition = addConstructor(MyClass2Definition, ...
    "ns::MyClass2::MyClass2(ns::MyClass2 const & input1)", ...
    "Description", "clib.cppUseCases.ns.MyClass2    Constructor of C++ class ns::MyClass2."); % Modify help description values as needed.
defineArgument(MyClass2Constructor2Definition, "input1", "clib.cppUseCases.ns.MyClass2", "input");
validate(MyClass2Constructor2Definition);

%% C++ class public data member a for C++ class ns::MyClass2
% C++ Signature: double ns::MyClass2::a

addProperty(MyClass2Definition, "a", "double", ...
    "Description", "double    Data member of C++ class ns::MyClass2."); % Modify help description values as needed.

%% C++ class public data member b for C++ class ns::MyClass2
% C++ Signature: short ns::MyClass2::b

addProperty(MyClass2Definition, "b", "int16", ...
    "Description", "int16    Data member of C++ class ns::MyClass2."); % Modify help description values as needed.

%% C++ class public data member c for C++ class ns::MyClass2
% C++ Signature: long ns::MyClass2::c

addProperty(MyClass2Definition, "c", "int32", ...
    "Description", "int32    Data member of C++ class ns::MyClass2."); % Modify help description values as needed.

%% Validate the library definition

validate(libDef);

end