1/* 2 * Access to elements of combined objects 3 * 4 * Device 5 * Power Resource 6 * Processor 7 * Thermal Zone 8 * Method (access to internal objects of method, 9 * in case that access is generated not from 10 * inside that method looks incorrect) 11 * 12 * All available ways to access internal 13 * elements of combined objects are these: 14 * 15 * - by name (2-4 below): 16 * 17 * 1) ABCD - through the all tree (search rules apply) 18 * 2) ^...^ABCD - N parents up (search rules do not apply) 19 * 3) XYZ.ABCD - in current scope only (search rules do not apply) 20 * 4) \XYZ.ABCD - absolute path (search rules do not apply) 21 * - pass to Local, Arg, immediately to expressions, etc.. 22 * 23 * - by RefOf/DerefOf: 24 * 25 * RefOf(d000.i000) 26 * 27 * ??????????????????????????????????????????? 28 * 29 * - by Index/DerefOf: 30 * 31 * Index(d000.p000) 32 * 33 * ??????????????????????????????????????????? 34 * 35 * - by Fields: 36 * 37 * Field 38 * Index Field 39 * Bank Field 40 * Buffer Field 41 * 42 * Creating fields features: 43 * - on the same level 44 * - inside deeper level (inside call to another level method) 45 * - parent object is on global/local level 46 * - parent object is inside some compound type object 47 * Usage fields features: 48 * - pass by Arg to method 49 * - Store/Copy intermediately to Local 50 * - Store/Copy intermediately to Arg (affectively local) 51 * - Store/Copy intermediately to Named 52 * - Store/Copy intermediately to Named of compound object 53 * - pass immediately to expressions 54 * Note: don't check there the Implicit Conversion Rules 55 * 56 * - Method invocations: 57 * 58 * - pass to methods (7,6,...) objects of different type 59 * - in other checkings pass to method not only the object 60 * immediately participating in checking but also other 61 * objects including: 62 * - parent object of element of package, 63 * - parent object of element of Field, 64 * - parent object of IRef Reference, 65 * - parent object of ORef Reference, 66 * - original compound object of all other type objects above, 67 * - pass the same object (see above too) to method by several parameters, 68 * - etc. 69 * 70 * There is no way to specify by ASL code accessing 71 * elements of combined object in case that combined 72 * object is represented by: 73 * 74 * - ArgX 75 * - LocalX 76 * - another Named object where the combined 77 * object has been copied by CopyObject (see Note below) 78 * 79 * Note: if the target object where the combined object is 80 * copied contains some same name object as source object 81 * then we can expect that after CopyObject operation that 82 * object will contain new value the same as in source object 83 * (exotic case of CopyObject usage). 84 * I will not verify this case, at least now. 85 * 86 * So, there is no much sense to verify behaviour of: 87 * 88 * - RefOf to combined object 89 * - combined object passed by Arg to method 90 * - combined object Stored/CopyObject to LocalX 91 * - combined object Stored/CopyObject to ArgX (effective local) 92 * - combined object Stored/CopyObject to NamedX 93 * - combined object as element of Package 94 * 95 * Exotic (could be done ever): 96 * All the possible checkings can be implemented (ASL coded) 97 * to check the behaviour of the object substituted by the 98 * CopyObject instead of the original one. 99 * At that the substituted object can be 1) of the same type 100 * and have a) all the elements the original has and b) not 101 * all of them are present in the copy and 2) be object of 102 * some another type than original. 103 */ 104