1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Contains various validation functions for the GLES2 service. 6 7#ifndef GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_H_ 8#define GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_H_ 9 10#include <algorithm> 11#include <vector> 12#define GLES2_GPU_SERVICE 1 13#include "gpu/command_buffer/common/gles2_cmd_format.h" 14 15namespace gpu { 16namespace gles2 { 17 18// ValueValidator returns true if a value is valid. 19template <typename T> 20class ValueValidator { 21 public: 22 ValueValidator() {} 23 24 ValueValidator(const T* valid_values, int num_values) { 25 for (int ii = 0; ii < num_values; ++ii) { 26 AddValue(valid_values[ii]); 27 } 28 } 29 30 void AddValue(const T value) { 31 if (!IsValid(value)) { 32 valid_values_.push_back(value); 33 } 34 } 35 36 bool IsValid(const T value) const { 37 return std::find(valid_values_.begin(), valid_values_.end(), value) != 38 valid_values_.end(); 39 } 40 41 const std::vector<T>& GetValues() const { 42 return valid_values_; 43 } 44 45 private: 46 std::vector<T> valid_values_; 47}; 48 49struct Validators { 50 Validators(); 51#include "gpu/command_buffer/service/gles2_cmd_validation_autogen.h" 52}; 53 54} // namespace gles2 55} // namespace gpu 56 57#endif // GPU_COMMAND_BUFFER_SERVICE_GLES2_CMD_VALIDATION_H_ 58 59