From f027ee7cb0ed39a3c84b74673655bac4e22d335f Mon Sep 17 00:00:00 2001 From: Nicola Pero Date: Mon, 4 Jul 2011 08:02:50 +0000 Subject: In gcc/objc/: 2011-07-04 Nicola Pero In gcc/objc/: 2011-07-04 Nicola Pero 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 * 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 --- gcc/objc/objc-encoding.h | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 gcc/objc/objc-encoding.h (limited to 'gcc/objc/objc-encoding.h') 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 +. */ + +#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 */ -- cgit v1.1