aboutsummaryrefslogtreecommitdiff
path: root/gcc/objc/objc-encoding.h
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2011-07-04 08:02:50 +0000
committerNicola Pero <nicola@gcc.gnu.org>2011-07-04 08:02:50 +0000
commitf027ee7cb0ed39a3c84b74673655bac4e22d335f (patch)
treecb74883a8d479cb7d23bc099e02c2f37121c8ed6 /gcc/objc/objc-encoding.h
parent7e6fd113c9b2eacbb749254064bb54e436efd1c7 (diff)
downloadgcc-f027ee7cb0ed39a3c84b74673655bac4e22d335f.zip
gcc-f027ee7cb0ed39a3c84b74673655bac4e22d335f.tar.gz
gcc-f027ee7cb0ed39a3c84b74673655bac4e22d335f.tar.bz2
In gcc/objc/: 2011-07-04 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/objc/: 2011-07-04 Nicola Pero <nicola.pero@meta-innovation.com> Refactored encoding code into objc-encoding.h and objc-encoding.c. * objc-act.c (util_obstack, util_firstobj, encode_type_qualifiers, encode_type, generating_instance_variables, objc_method_parm_type, objc_encoded_type_size, encode_method_prototype, objc_build_encode_expr, pointee_is_readonly, encode_pointer, encode_array, encode_vector, encode_aggregate_fields, encode_aggregate_within, encode_next_bitfield, encode_gnu_bitfield, encode_field_decl, objc_v2_encode_property_attr): Moved to objc-encoding.h and objc-encoding.c. No change in the actual code. Include objc-encoding.h. (objc_init): Added TODO. (objc_build_property_setter_name): Made non-static so it can be called from objc-encoding.c. * objc-act.h (OBJC_ENCODE_INLINE_DEFS, OBJC_ENCODE_DONT_INLINE_DEFS): Moved to objc-encoding.h. * objc-runtime-shared-support.h (objc_v2_encode_property_attr, encode_method_prototype, encode_field_decl, generating_instance_variables): Moved to objc-encoding.h. (objc_build_property_setter_name): Declare. * objc-encoding.c: New. * objc-encoding.h: New. * objc-gnu-runtime-abi-01.c: Include objc-encoding.h. * objc-next-runtime-abi-01.c: Likewise. * objc-next-runtime-abi-02.c: Likewise. * objc-runtime-shared-support.c: Likewise. * Make-lang.in (OBJC_OBJS): Added objc-encoding.o. (objc/objc-lang.o): Reordered dependencies. (objc/objc-runtime-shared-support.o): Reordered dependencies. Added dependencies on objc-encoding.h and on $(GGC_H), $(DIAGNOSTIC_CORE_H), $(FLAGS_H) and input.h. (objc/objc-gnu-runtime-abi-01.o): Likewise. (objc/objc-next-runtime-abi-01.o): Likewise. (objc/objc-next-runtime-abi-02.o): Likewise. (objc/objc-act.o): Reordered dependencies. Added dependency on objc-encoding.h. (objc/objc-encoding.o): New rule. * objc-encoding.c (encode_type): Use "%<%T%>" format when printing warning "unknown type %<%T%> found during Objective-C encoding" instead of using gen_type_name. In gcc/objcp/: 2011-07-04 Nicola Pero <nicola.pero@meta-innovation.com> * Make-lang.in (OBJCXX_OBJS): Added objc-encoding.o. (objcp/objcp-lang.o): Reordered dependencies. Depend on GGC_H. (objcp/objcp-decl.o): Reordered dependencies. (objcp/objc-runtime-shared-support.o): Reordered dependencies. Updated them to be identical to the corresponding new objc/ ones, with the addition of objcp-decl.h. (objcp/objc-runtime-shared-support.o): Likewise. (objcp/objc-gnu-runtime-abi-01.o): Likewise. (objcp/objc-next-runtime-abi-01.o): Likewise. (objcp/objc-next-runtime-abi-02.o): Likewise. (objcp/objcp-act.o): Reordered dependencies. Added dependency on objc-encoding.h. (objcp/objc-encoding.o): New rule. From-SVN: r175797
Diffstat (limited to 'gcc/objc/objc-encoding.h')
-rw-r--r--gcc/objc/objc-encoding.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/gcc/objc/objc-encoding.h b/gcc/objc/objc-encoding.h
new file mode 100644
index 0000000..2fad593
--- /dev/null
+++ b/gcc/objc/objc-encoding.h
@@ -0,0 +1,74 @@
+/* Routines dealing with ObjC encoding of types
+ Copyright (C) 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
+ Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3. If not see
+<http://www.gnu.org/licenses/>. */
+
+#ifndef GCC_OBJC_ENCODING_H
+#define GCC_OBJC_ENCODING_H
+
+/* TODO: Hide the following obstack code in objc-encoding.c, and have
+ a objc_encoding_init() that is called by objc_init() to set them
+ up. */
+
+/* Set up for use of obstacks. */
+#include "obstack.h"
+
+/* This obstack is used to accumulate the encoding of a data type. */
+extern struct obstack util_obstack;
+
+/* This points to the beginning of obstack contents, so we can free
+ the whole contents. */
+extern char *util_firstobj;
+
+/* This will be used to initialize the obstacks used by encoding. It
+ should be called before any encoding function is used. It is
+ usually done in objc_init(). */
+/* extern void objc_encoding_init (void); */
+
+
+/* Encode a method prototype. The format is described in
+ gcc/doc/objc.texi, section 'Method signatures'. */
+extern tree encode_method_prototype (tree method_decl);
+
+/* This is used to implement @encode(). See gcc/doc/objc.texi,
+ section '@encode'. */
+extern tree objc_build_encode_expr (tree type);
+
+/* (Decide if these can ever be validly changed.) */
+#define OBJC_ENCODE_INLINE_DEFS 0
+#define OBJC_ENCODE_DONT_INLINE_DEFS 1
+
+/* Encode the attributes of a property. */
+extern tree objc_v2_encode_prop_attr (tree property);
+
+/* Encode the type of a field. */
+extern void encode_field_decl (tree field_decl, int curtype, int format);
+
+/* Tells "encode_pointer/encode_aggregate" whether we are generating
+ type descriptors for instance variables (as opposed to methods).
+ Type descriptors for instance variables contain more information
+ than methods (for static typing and embedded structures).
+
+ TODO: Replace this global variable with an argument that is passed
+ to the various encode() functions.
+
+ TODO: Change it to a 'bool'. */
+extern int generating_instance_variables;
+
+#endif /* GCC_OBJC_ENCODING_H */