Spaces:
Running
Running
/* | |
Copyright 2015 Google Inc. All rights reserved. | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this file except in compliance with the License. | |
You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
*/ | |
// IWYU pragma: private, include "float_matrix.h" | |
inline uint32_t FloatMatrix::get_x_size(void) const { | |
return x_size_; | |
} | |
inline uint32_t FloatMatrix::get_y_size(void) const { | |
return y_size_; | |
} | |
// y1x1 y1x2 y1x3 y1x4 y2x1 y2x2 y2x3 y2x4 | |
inline float FloatMatrix::Get(uint32_t x, uint32_t y) const { | |
return data_[y * x_size_ + x]; | |
} | |
inline float &FloatMatrix::Get(uint32_t x, uint32_t y) { | |
if (y >= y_size_ || x >= x_size_) { | |
fprintf(stderr, "Matrix boundary overrun error"); | |
} | |
return data_[y * x_size_ + x]; | |
} | |
inline void FloatMatrix::Set(uint32_t x, uint32_t y, float val) { | |
if (y >= y_size_ || x >= x_size_) { | |
fprintf(stderr, "Matrix boundary overrun error"); | |
} | |
data_[y *x_size_ + x] = val; | |
} | |
inline uint32_t FloatMatrix::size() const { | |
return x_size_ * y_size_; | |
} | |
inline const float *FloatMatrix::data(void) const { | |
return data_; | |
} | |
inline void FloatMatrix::StringWrite(std::string *out) const { | |
if (size()) { | |
char *source = reinterpret_cast<char*>(data_); | |
out->append(source, size() * sizeof(*data_)); | |
} | |
} | |