value.h revision 65953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9
165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn/* 265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * Copyright (C) 2011 The Android Open Source Project 365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * 465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * Licensed under the Apache License, Version 2.0 (the "License"); 565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * you may not use this file except in compliance with the License. 665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * You may obtain a copy of the License at 765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * 865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * http://www.apache.org/licenses/LICENSE-2.0 965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * 1065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * Unless required by applicable law or agreed to in writing, software 1165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * distributed under the License is distributed on an "AS IS" BASIS, 1265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * See the License for the specific language governing permissions and 1465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn * limitations under the License. 1565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn */ 1665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 1765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn#ifndef ANDROID_FILTERFW_CORE_VALUE_H 1865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn#define ANDROID_FILTERFW_CORE_VALUE_H 1965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 2065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn#ifdef __cplusplus 2165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennextern "C" { 2265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn#endif 2365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 2465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn// TODO: As this is no longer part of the proposed NDK, should we make this object-oriented (C++) 2565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn// instead? We can also probably clean this up a bit. 2665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 2765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn// TODO: Change this to an opaque handle? 2865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renntypedef struct { 2965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn void* value; 3065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn int type; 3165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn int count; 3265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn} Value; 3365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 3465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn// TODO: Probably should make these const Value*? 3565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint GetIntValue(Value value); 3665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennfloat GetFloatValue(Value value); 3765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennconst char* GetStringValue(Value value); 3865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennconst char* GetBufferValue(Value value); 3965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennchar* GetMutableBufferValue(Value value); 4065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint* GetIntArrayValue(Value value); 4165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennfloat* GetFloatArrayValue(Value value); 4265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 4365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn// TODO: Probably should make these const Value*? 4465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsNull(Value value); 4565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsInt(Value value); 4665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsFloat(Value value); 4765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsString(Value value); 4865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsBuffer(Value value); 4965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsMutableBuffer(Value value); 5065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsIntArray(Value value); 5165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint ValueIsFloatArray(Value value); 5265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 5365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeNullValue(); 5465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeIntValue(int value); 5565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeFloatValue(float value); 5665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeStringValue(const char* value); 5765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeBufferValue(const char* data, int size); 5865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeBufferValueNoCopy(const char* data, int size); 5965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeMutableBufferValue(const char* data, int size); 6065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeMutableBufferValueNoCopy(char* data, int size); 6165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeIntArrayValue(const int* values, int count); 6265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius RennValue MakeFloatArrayValue(const float* values, int count); 6365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 6465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn// Note: These only alloc if value is Null! Otherwise they overwrite, so data must fit! 6565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint SetIntValue(Value* value, int new_value); 6665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint SetFloatValue(Value* value, float new_value); 6765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint SetStringValue(Value* value, const char* new_value); 6865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint SetMutableBufferValue(Value* value, const char* new_data, int size); 6965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint SetIntArrayValue(Value* value, const int* new_values, int count); 7065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint SetFloatArrayValue(Value* value, const float* new_values, int count); 7165953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 7265953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennint GetValueCount(Value value); 7365953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 7465953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Rennvoid ReleaseValue(Value* value); 7565953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 7665953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn#ifdef __cplusplus 7765953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn} // extern "C" 7865953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn#endif 7965953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn 8065953da4636fbf5f0a24b8f5f2b5fa7d76ff13d9Marius Renn#endif // ANDROID_FILTERFW_FILTER_VALUE_H 81