# 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. _API_UTIL_NAMESPACE = 'json_schema_compiler::util' class UtilCCHelper(object): """A util class that generates code that uses tools/json_schema_compiler/util.cc. """ def __init__(self, type_manager): self._type_manager = type_manager def PopulateArrayFromListFunction(self, optional): """Returns the function to turn a list into a vector. """ populate_list_fn = ('PopulateOptionalArrayFromList' if optional else 'PopulateArrayFromList') return ('%s::%s') % (_API_UTIL_NAMESPACE, populate_list_fn) def CreateValueFromArray(self, src, optional): """Generates code to create a scoped_pt from the array at src. |src| The variable to convert, either a vector or scoped_ptr. |optional| Whether |type_| was optional. Optional types are pointers so must be treated differently. """ if optional: name = 'CreateValueFromOptionalArray' else: name = 'CreateValueFromArray' return '%s::%s(%s)' % (_API_UTIL_NAMESPACE, name, src) def GetIncludePath(self): return '#include "tools/json_schema_compiler/util.h"' def GetValueTypeString(self, value, is_ptr=False): call = '.GetType()' if is_ptr: call = '->GetType()' return 'json_schema_compiler::util::ValueTypeToString(%s%s)' % (value, call)