File: raw_object.py

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (72 lines) | stat: -rw-r--r-- 1,729 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# Copyright (c) 2014 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from collections import defaultdict


# {
#   'libnacl': {
#      'configs' : [ X1_Y1, X2_Y1, ...],
#      'type': 'source_set' | 'NaClSharedLibrary' | ....,
#      'properties' : {
#         'sources' : {
#             'source_file1.c' : {
#               'configs' : [ X1_Y1, X2_Y1, ...],
#             },
#             'source_file1.c' : {
#               'configs' : [ X1_Y1, X2_Y1, ...],
#             },
#
#  RawTree(TOP)
#     RawObject(libnacl)
#       RawTree(sources)
#           RawObject(source_file.c)

class RawTree(object):
  def __init__(self):
    self.children = defaultdict(RawObject)

  def __iter__(self):
    return self.children.__iter__()

  def __len__(self):
    return len(self.children)

  def __getitem__(self, key):
    return self.children[key]

  def __setitem__(self, key, value):
    self.children[key] = value


class RawObject(object):
  def __init__(self):
    self.obj_type = None
    self.configs = []
    self.properties = defaultdict(RawTree)

  def __getitem__(self, key):
    return self.properties[key]

  def __setitem__(self, key, value):
    self.properties[key] = value

  def SetType(self, obj_type):
    if self.obj_type == None:
      self.obj_type = obj_type
    if self.obj_type != obj_type:
      raise RuntimeError('Mismatch type for %s, expected %s.' %
                         (name, obj_type))

  def AddCondition(self, cond):
    self.configs.append(cond)

  def Configs(self):
    return self.configs

  def Properties(self):
    return self.properties

  def Type(self):
    return self.obj_type