diff options
Diffstat (limited to 'tools/json_schema_compiler/any_helper.py')
-rw-r--r-- | tools/json_schema_compiler/any_helper.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tools/json_schema_compiler/any_helper.py b/tools/json_schema_compiler/any_helper.py new file mode 100644 index 0000000..4502dab --- /dev/null +++ b/tools/json_schema_compiler/any_helper.py @@ -0,0 +1,32 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +ANY_NAMESPACE = 'json_schema_compiler::any' +ANY_CLASS = ANY_NAMESPACE + '::Any' + +class AnyHelper(object): + """A util class that generates code that uses + tools/json_schema_compiler/any.cc. + """ + def Init(self, any_prop, src, dst): + """Initialize |dst|.|any_prop| to |src|. + + src: Value* + dst: Type* + """ + if any_prop.optional: + return '%s->%s->Init(*%s)' % (dst, any_prop.name, src) + else: + return '%s->%s.Init(*%s)' % (dst, any_prop.name, src) + + def GetValue(self, any_prop, var): + """Get |var| as a const Value&. + + var: Any* or Any + """ + if any_prop.optional: + return '%s->value()' % var + else: + return '%s.value()' % var + |