- add sources.
[platform/framework/web/crosswalk.git] / src / tools / json_schema_compiler / memoize.py
1 # Copyright 2013 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 def memoize(fn):
6   '''Decorates |fn| to memoize.
7   '''
8   memory = {}
9   def impl(*args, **optargs):
10     full_args = args + tuple(optargs.iteritems())
11     if full_args not in memory:
12       memory[full_args] = fn(*args, **optargs)
13     return memory[full_args]
14   return impl