]> git.sur5r.net Git - cc65/blob - src/ca65/sizeof.c
More .size/.sizeof support
[cc65] / src / ca65 / sizeof.c
1 /*****************************************************************************/
2 /*                                                                           */
3 /*                                 sizeof.c                                  */
4 /*                                                                           */
5 /*                      Handle sizes of types and data                       */
6 /*                                                                           */
7 /*                                                                           */
8 /*                                                                           */
9 /* (C) 2003      Ullrich von Bassewitz                                       */
10 /*               Römerstraße 52                                              */
11 /*               D-70794 Filderstadt                                         */
12 /* EMail:        uz@cc65.org                                                 */
13 /*                                                                           */
14 /*                                                                           */
15 /* This software is provided 'as-is', without any expressed or implied       */
16 /* warranty.  In no event will the authors be held liable for any damages    */
17 /* arising from the use of this software.                                    */
18 /*                                                                           */
19 /* Permission is granted to anyone to use this software for any purpose,     */
20 /* including commercial applications, and to alter it and redistribute it    */
21 /* freely, subject to the following restrictions:                            */
22 /*                                                                           */
23 /* 1. The origin of this software must not be misrepresented; you must not   */
24 /*    claim that you wrote the original software. If you use this software   */
25 /*    in a product, an acknowledgment in the product documentation would be  */
26 /*    appreciated but is not required.                                       */
27 /* 2. Altered source versions must be plainly marked as such, and must not   */
28 /*    be misrepresented as being the original software.                      */
29 /* 3. This notice may not be removed or altered from any source              */
30 /*    distribution.                                                          */
31 /*                                                                           */
32 /*****************************************************************************/
33
34
35
36 /* ca65 */
37 #include "sizeof.h"
38 #include "symtab.h"
39
40
41
42 /*****************************************************************************/
43 /*                                   Data                                    */
44 /*****************************************************************************/
45
46
47
48 /* The name of the symbol used to encode the size. The name of this entry is
49  * choosen so that it cannot be accessed by the user.
50  */
51 static const char SizeEntryName[] = ".size";
52
53
54
55
56 /*****************************************************************************/
57 /*                                   Code                                    */
58 /*****************************************************************************/
59
60
61
62 SymEntry* GetSizeOfScope (SymTable* Scope)
63 /* Get the size of a scope. The function returns the symbol table entry that
64  * encodes the size, and will create a new entry if it does not exist.
65  */
66 {
67     return SymFind (Scope, SizeEntryName, SYM_ALLOC_NEW);
68 }
69
70
71
72 SymEntry* GetSizeOfSymbol (SymEntry* Sym)
73 /* Get the size of a symbol table entry. The function returns the symbol table
74  * entry that encodes the size of the symbol and will create a new one if it
75  * does not exist.
76  */
77 {
78     return SymFindLocal (Sym, SizeEntryName, SYM_ALLOC_NEW);
79 }
80
81
82