aboutsummaryrefslogtreecommitdiffhomepage
path: root/platform_tools/android/gyp_gen/vars_dict_lib.py
diff options
context:
space:
mode:
Diffstat (limited to 'platform_tools/android/gyp_gen/vars_dict_lib.py')
-rw-r--r--platform_tools/android/gyp_gen/vars_dict_lib.py166
1 files changed, 0 insertions, 166 deletions
diff --git a/platform_tools/android/gyp_gen/vars_dict_lib.py b/platform_tools/android/gyp_gen/vars_dict_lib.py
deleted file mode 100644
index 6be2402a04..0000000000
--- a/platform_tools/android/gyp_gen/vars_dict_lib.py
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/usr/bin/python
-
-# Copyright 2014 Google Inc.
-#
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import collections
-import types
-
-# The goal of this class is to store a set of unique items in the order in
-# which they are inserted. This is important for the final makefile, where
-# we want to make sure the image decoders are in a particular order. See
-# images.gyp for more information.
-class OrderedSet(object):
- """Ordered set of unique items that supports addition and removal.
-
- Retains the order in which items are inserted.
- """
-
- def __init__(self):
- self.__ordered_set = []
-
- def add(self, item):
- """Add item, if it is not already in the set.
-
- item is appended to the end if it is not already in the set.
-
- Args:
- item: The item to add.
- """
- if item not in self.__ordered_set:
- self.__ordered_set.append(item)
-
- def __contains__(self, item):
- """Whether the set contains item.
-
- Args:
- item: The item to search for in the set.
-
- Returns:
- bool: Whether the item is in the set.
- """
- return item in self.__ordered_set
-
- def __iter__(self):
- """Iterator for the set.
- """
- return self.__ordered_set.__iter__()
-
- def remove(self, item):
- """
- Remove item from the set.
-
- Args:
- item: Item to be removed.
-
- Raises:
- ValueError if item is not in the set.
- """
- self.__ordered_set.remove(item)
-
- def __len__(self):
- """Number of items in the set.
- """
- return len(self.__ordered_set)
-
- def __getitem__(self, index):
- """Return item at index.
- """
- return self.__ordered_set[index]
-
- def reset(self):
- """Reset to empty.
- """
- self.__ordered_set = []
-
- def set(self, other):
- """Replace this ordered set with another.
-
- Args:
- other: OrderedSet to replace this one. After this call, this OrderedSet
- will contain exactly the same elements as other.
- """
- self.__ordered_set = list(other.__ordered_set)
-
-VAR_NAMES = ['LOCAL_CFLAGS',
- 'LOCAL_CPPFLAGS',
- 'LOCAL_SRC_FILES',
- 'LOCAL_SHARED_LIBRARIES',
- 'LOCAL_STATIC_LIBRARIES',
- 'LOCAL_C_INCLUDES',
- 'LOCAL_EXPORT_C_INCLUDE_DIRS',
- 'DEFINES',
- 'KNOWN_TARGETS',
- # These are not parsed by gyp, but set manually.
- 'LOCAL_MODULE_TAGS',
- 'LOCAL_MODULE']
-
-class VarsDict(collections.namedtuple('VarsDict', VAR_NAMES)):
- """Custom class for storing the arguments to Android.mk variables.
-
- Can also be treated as a dictionary with fixed keys.
- """
-
- __slots__ = ()
-
- def __new__(cls):
- lists = []
- # TODO (scroggo): Is there a better way add N items?
- for __unused__ in range(len(VAR_NAMES)):
- lists.append(OrderedSet())
- return tuple.__new__(cls, lists)
-
- def keys(self):
- """Return the field names as strings.
- """
- return self._fields
-
- def __getitem__(self, index):
- """Return an item, indexed by a number or a string.
- """
- if type(index) == types.IntType:
- # Treat the index as an array index into a tuple.
- return tuple.__getitem__(self, index)
- if type(index) == types.StringType:
- # Treat the index as a key into a dictionary.
- return eval('self.%s' % index)
- return None
-
-
-def intersect(var_dict_list):
- """Compute intersection of VarsDicts.
-
- Find the intersection of a list of VarsDicts and trim each input to its
- unique entries.
-
- Args:
- var_dict_list: list of VarsDicts. WARNING: each VarsDict will be
- modified in place, to remove the common elements!
- Returns:
- VarsDict containing list entries common to all VarsDicts in
- var_dict_list
- """
- intersection = VarsDict()
- # First VarsDict
- var_dict_a = var_dict_list[0]
- # The rest.
- other_var_dicts = var_dict_list[1:]
-
- for key in var_dict_a.keys():
- # Copy A's list, so we can continue iterating after modifying the original.
- a_list = list(var_dict_a[key])
- for item in a_list:
- # If item is in all lists, add to intersection, and remove from all.
- in_all_lists = True
- for var_dict in other_var_dicts:
- if not item in var_dict[key]:
- in_all_lists = False
- break
- if in_all_lists:
- intersection[key].add(item)
- for var_dict in var_dict_list:
- var_dict[key].remove(item)
- return intersection
-