From ccf02ac9bd67d4d49ad8264ae7fc6098e361ff4b Mon Sep 17 00:00:00 2001 From: "apatrick@google.com" Date: Thu, 12 Nov 2009 19:56:24 +0000 Subject: Made all line endings consistently LF and added svn:eol-style=LF property to files with these names / extensions. c cc h mm txt idl py js html css gyp gypi xml shader json htm README DEPS git-svn-id: svn://svn.chromium.org/chrome/trunk/src@31811 0039d316-1c4b-4281-b951-d872f2087c98 --- o3d/import/cross/json_object.h | 578 ++++++++++++++++++++--------------------- 1 file changed, 289 insertions(+), 289 deletions(-) (limited to 'o3d/import/cross/json_object.h') diff --git a/o3d/import/cross/json_object.h b/o3d/import/cross/json_object.h index 3cf2815..a4c153a 100644 --- a/o3d/import/cross/json_object.h +++ b/o3d/import/cross/json_object.h @@ -1,289 +1,289 @@ -/* - * Copyright 2009, Google Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following disclaimer - * in the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -// This file declares the JSONObject class. - -#ifndef O3D_IMPORT_CROSS_JSON_OBJECT_H_ -#define O3D_IMPORT_CROSS_JSON_OBJECT_H_ - -#include -#include "core/cross/param_object.h" -#include "core/cross/material.h" -#include "core/cross/transform.h" -#include "serializer/cross/serializer.h" - -namespace o3d { - -class StructuredWriter; - -// A JSONValue is a base class for all JSON values stored in a JSONObject. -class JSONValue : public RefCounted { - public: - typedef SmartPointer Ref; - - virtual ~JSONValue() { - } - - // Whether or not this value exists. - bool exists() const { - return exists_; - } - - // Sets the existence of this value. - void set_exists(bool exists) { - exists_ = exists; - } - - // Function to serialize the value of this JSON value. - virtual void Serialize(StructuredWriter* writer) const = 0; - - protected: - // optional means the value is optional. If true the value defaults to - // not existing. If false the value defaults to existing. - explicit JSONValue(bool optional) - : optional_(optional), exists_(!optional) { - } - - private: - bool optional_; - bool exists_; // used for optional values. -}; - -// A Template for optional typed non-ref JSON values. -template -class TypedJSONValue : public JSONValue { - public: - typedef T DataType; - TypedJSONValue() - : JSONValue(optional) { - } - virtual ~TypedJSONValue() {} - - // Sets the value stored in the JSONValue. - void set_value(const DataType& value) { - set_exists(true); - value_ = value; - } - - // Returns the current value stored in the JSONValue. - DataType value() const { - DCHECK(exists()); - return value_; - } - - // Overridden from JSONValue. - virtual void Serialize(StructuredWriter* writer) const { - DCHECK(exists()); - o3d::Serialize(writer, value()); - } - - private: - // The value stored in the JSONValue. - DataType value_; - - DISALLOW_COPY_AND_ASSIGN(TypedJSONValue); -}; - -// A Template for typed ref JSON values. -template -class TypedRefJSONValue : public JSONValue { - public: - typedef T* Pointer; - typedef T DataType; - - TypedRefJSONValue() - : JSONValue(false) { - } - - virtual ~TypedRefJSONValue() { - } - - // Set the value stored in the. - void set_value(Pointer const value) { - value_ = typename T::Ref(value); - } - - // Returns the current value stored in the Param. - Pointer value() const { - return value_.Get(); - } - - // Overridden from JSONValue. - virtual void Serialize(StructuredWriter* writer) const { - o3d::Serialize(writer, static_cast(value())); - } - - protected: - typename T::Ref value_; - - private: - DISALLOW_COPY_AND_ASSIGN(TypedRefJSONValue); -}; - -// Classes for various types of JSON Data. -class JSONFloat : public TypedJSONValue { - public: - typedef SmartPointer Ref; - JSONFloat() { - set_value(0.0f); - } -}; -class JSONFloat2 : public TypedJSONValue { - public: - typedef SmartPointer Ref; - JSONFloat2() { - set_value(Float2(0.0f, 0.0f)); - } -}; -class JSONFloat3 : public TypedJSONValue { - public: - typedef SmartPointer Ref; - JSONFloat3() { - set_value(Float3(0.0f, 0.0f, 0.0f)); - } -}; -class JSONFloat4 : public TypedJSONValue { - public: - typedef SmartPointer Ref; - JSONFloat4() { - set_value(Float4(0.0f, 0.0f, 0.0f, 0.0f)); - } -}; -class JSONMatrix4 : public TypedJSONValue { - public: - typedef SmartPointer Ref; - JSONMatrix4() { - set_value(Matrix4::identity()); - } -}; -class JSONInteger : public TypedJSONValue { - public: - typedef SmartPointer Ref; - JSONInteger() { - set_value(0); - } -}; -class JSONBoolean : public TypedJSONValue { - public: - typedef SmartPointer Ref; - JSONBoolean() { - set_value(false); - } -}; -class JSONString : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONTransform : public TypedRefJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONMaterial : public TypedRefJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalFloat : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalFloat2 : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalFloat3 : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalFloat4 : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalMatrix4 : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalInteger : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalBoolean : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; -class JSONOptionalString : public TypedJSONValue { - public: - typedef SmartPointer Ref; -}; - -// A JSONObject is a used for serialization only and is not part of the normal -// O3D plugin. It is used to easily add name/value pairs to be serialized by the -// serializer as JSON objects. Being that it's ParamObject you have 2 choices -// for getting data serialized. As O3D Params or as JSONValues. The reason to -// use one over the other... Params can be animated but are relatively heavy. -// JSONValues become plane JavaScript when deserialized. -// To add a Param use RegisterParamRef, to add a JSONValue use -// RegisterJSONValue. -class JSONObject : public ParamObject { - public: - typedef SmartPointer Ref; - typedef std::map NameValueMap; - - // Seralizes the JSONObject. - void Serialize(StructuredWriter* writer) const; - - protected: - explicit JSONObject(ServiceLocator* service_locator); - - // Registers a pointer to a reference to a JSONValue. - // Parameters: - // name: name of JSONValue - // ref_pointer: Pointer to typed reference to JSONValue. - template - void RegisterJSONValue(const String& name, T* ref_pointer) { - *ref_pointer = T(new typename T::ClassType()); - AddProperty(name, ref_pointer->Get()); - } - - private: - // Adds a property to this JSON Object. - void AddProperty(const String& name, JSONValue* value); - - NameValueMap properties_; - - O3D_OBJECT_BASE_DECL_CLASS(JSONObject, ParamObject); - DISALLOW_COPY_AND_ASSIGN(JSONObject); -}; - -} // namespace o3d - -#endif // O3D_IMPORT_CROSS_JSON_OBJECT_H_ - - +/* + * Copyright 2009, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// This file declares the JSONObject class. + +#ifndef O3D_IMPORT_CROSS_JSON_OBJECT_H_ +#define O3D_IMPORT_CROSS_JSON_OBJECT_H_ + +#include +#include "core/cross/param_object.h" +#include "core/cross/material.h" +#include "core/cross/transform.h" +#include "serializer/cross/serializer.h" + +namespace o3d { + +class StructuredWriter; + +// A JSONValue is a base class for all JSON values stored in a JSONObject. +class JSONValue : public RefCounted { + public: + typedef SmartPointer Ref; + + virtual ~JSONValue() { + } + + // Whether or not this value exists. + bool exists() const { + return exists_; + } + + // Sets the existence of this value. + void set_exists(bool exists) { + exists_ = exists; + } + + // Function to serialize the value of this JSON value. + virtual void Serialize(StructuredWriter* writer) const = 0; + + protected: + // optional means the value is optional. If true the value defaults to + // not existing. If false the value defaults to existing. + explicit JSONValue(bool optional) + : optional_(optional), exists_(!optional) { + } + + private: + bool optional_; + bool exists_; // used for optional values. +}; + +// A Template for optional typed non-ref JSON values. +template +class TypedJSONValue : public JSONValue { + public: + typedef T DataType; + TypedJSONValue() + : JSONValue(optional) { + } + virtual ~TypedJSONValue() {} + + // Sets the value stored in the JSONValue. + void set_value(const DataType& value) { + set_exists(true); + value_ = value; + } + + // Returns the current value stored in the JSONValue. + DataType value() const { + DCHECK(exists()); + return value_; + } + + // Overridden from JSONValue. + virtual void Serialize(StructuredWriter* writer) const { + DCHECK(exists()); + o3d::Serialize(writer, value()); + } + + private: + // The value stored in the JSONValue. + DataType value_; + + DISALLOW_COPY_AND_ASSIGN(TypedJSONValue); +}; + +// A Template for typed ref JSON values. +template +class TypedRefJSONValue : public JSONValue { + public: + typedef T* Pointer; + typedef T DataType; + + TypedRefJSONValue() + : JSONValue(false) { + } + + virtual ~TypedRefJSONValue() { + } + + // Set the value stored in the. + void set_value(Pointer const value) { + value_ = typename T::Ref(value); + } + + // Returns the current value stored in the Param. + Pointer value() const { + return value_.Get(); + } + + // Overridden from JSONValue. + virtual void Serialize(StructuredWriter* writer) const { + o3d::Serialize(writer, static_cast(value())); + } + + protected: + typename T::Ref value_; + + private: + DISALLOW_COPY_AND_ASSIGN(TypedRefJSONValue); +}; + +// Classes for various types of JSON Data. +class JSONFloat : public TypedJSONValue { + public: + typedef SmartPointer Ref; + JSONFloat() { + set_value(0.0f); + } +}; +class JSONFloat2 : public TypedJSONValue { + public: + typedef SmartPointer Ref; + JSONFloat2() { + set_value(Float2(0.0f, 0.0f)); + } +}; +class JSONFloat3 : public TypedJSONValue { + public: + typedef SmartPointer Ref; + JSONFloat3() { + set_value(Float3(0.0f, 0.0f, 0.0f)); + } +}; +class JSONFloat4 : public TypedJSONValue { + public: + typedef SmartPointer Ref; + JSONFloat4() { + set_value(Float4(0.0f, 0.0f, 0.0f, 0.0f)); + } +}; +class JSONMatrix4 : public TypedJSONValue { + public: + typedef SmartPointer Ref; + JSONMatrix4() { + set_value(Matrix4::identity()); + } +}; +class JSONInteger : public TypedJSONValue { + public: + typedef SmartPointer Ref; + JSONInteger() { + set_value(0); + } +}; +class JSONBoolean : public TypedJSONValue { + public: + typedef SmartPointer Ref; + JSONBoolean() { + set_value(false); + } +}; +class JSONString : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONTransform : public TypedRefJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONMaterial : public TypedRefJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalFloat : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalFloat2 : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalFloat3 : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalFloat4 : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalMatrix4 : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalInteger : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalBoolean : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; +class JSONOptionalString : public TypedJSONValue { + public: + typedef SmartPointer Ref; +}; + +// A JSONObject is a used for serialization only and is not part of the normal +// O3D plugin. It is used to easily add name/value pairs to be serialized by the +// serializer as JSON objects. Being that it's ParamObject you have 2 choices +// for getting data serialized. As O3D Params or as JSONValues. The reason to +// use one over the other... Params can be animated but are relatively heavy. +// JSONValues become plane JavaScript when deserialized. +// To add a Param use RegisterParamRef, to add a JSONValue use +// RegisterJSONValue. +class JSONObject : public ParamObject { + public: + typedef SmartPointer Ref; + typedef std::map NameValueMap; + + // Seralizes the JSONObject. + void Serialize(StructuredWriter* writer) const; + + protected: + explicit JSONObject(ServiceLocator* service_locator); + + // Registers a pointer to a reference to a JSONValue. + // Parameters: + // name: name of JSONValue + // ref_pointer: Pointer to typed reference to JSONValue. + template + void RegisterJSONValue(const String& name, T* ref_pointer) { + *ref_pointer = T(new typename T::ClassType()); + AddProperty(name, ref_pointer->Get()); + } + + private: + // Adds a property to this JSON Object. + void AddProperty(const String& name, JSONValue* value); + + NameValueMap properties_; + + O3D_OBJECT_BASE_DECL_CLASS(JSONObject, ParamObject); + DISALLOW_COPY_AND_ASSIGN(JSONObject); +}; + +} // namespace o3d + +#endif // O3D_IMPORT_CROSS_JSON_OBJECT_H_ + + -- cgit v1.1