#include <iostream>
typedef float mat4x4_t[16];
typedef float mat3x3_t[9];
void setParameter(const float*, int count) {
std::cout << "float[" << count << "]\n";
}
void setParameter(const mat3x3_t&) {
std::cout << "mat3x3_t\n";
}
void setParameter(const mat4x4_t&) {
std::cout << "mat4x4_t\n";
}
void setParameter(const mat3x3_t*, int count) {
std::cout << "mat3x3_t[" << count << "]\n";
}
void setParameter(const mat4x4_t*, int count) {
std::cout << "mat4x4_t[" << count << "]\n";
}
int main()
{
setParameter(new float[9], 9);
mat3x3_t mat3 = {};
setParameter(mat3);
mat4x4_t mat4 = {};
setParameter(mat4);
mat3x3_t mat3_10[10] = {};
setParameter(mat3_10, 10);
mat4x4_t mat4_10[10] = {};
setParameter(mat4_10, 10);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdHlwZWRlZiBmbG9hdCBtYXQ0eDRfdFsxNl07CnR5cGVkZWYgZmxvYXQgbWF0M3gzX3RbOV07Cgp2b2lkIHNldFBhcmFtZXRlcihjb25zdCBmbG9hdCosIGludCBjb3VudCkgewogICAgc3RkOjpjb3V0IDw8ICJmbG9hdFsiIDw8IGNvdW50IDw8ICJdXG4iOwp9CnZvaWQgc2V0UGFyYW1ldGVyKGNvbnN0IG1hdDN4M190JikgewogICAgc3RkOjpjb3V0IDw8ICJtYXQzeDNfdFxuIjsKfQp2b2lkIHNldFBhcmFtZXRlcihjb25zdCBtYXQ0eDRfdCYpIHsKICAgIHN0ZDo6Y291dCA8PCAibWF0NHg0X3RcbiI7Cn0Kdm9pZCBzZXRQYXJhbWV0ZXIoY29uc3QgbWF0M3gzX3QqLCBpbnQgY291bnQpIHsKICAgIHN0ZDo6Y291dCA8PCAibWF0M3gzX3RbIiA8PCBjb3VudCA8PCAiXVxuIjsKfQp2b2lkIHNldFBhcmFtZXRlcihjb25zdCBtYXQ0eDRfdCosIGludCBjb3VudCkgewogICAgc3RkOjpjb3V0IDw8ICJtYXQ0eDRfdFsiIDw8IGNvdW50IDw8ICJdXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIHNldFBhcmFtZXRlcihuZXcgZmxvYXRbOV0sIDkpOwoKICAgIG1hdDN4M190IG1hdDMgPSB7fTsKICAgIHNldFBhcmFtZXRlcihtYXQzKTsKCiAgICBtYXQ0eDRfdCBtYXQ0ID0ge307CiAgICBzZXRQYXJhbWV0ZXIobWF0NCk7CgogICAgbWF0M3gzX3QgbWF0M18xMFsxMF0gPSB7fTsKICAgIHNldFBhcmFtZXRlcihtYXQzXzEwLCAxMCk7CgogICAgbWF0NHg0X3QgbWF0NF8xMFsxMF0gPSB7fTsKICAgIHNldFBhcmFtZXRlcihtYXQ0XzEwLCAxMCk7CgogICAgcmV0dXJuIDA7Cn0=