X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/ea2d184cbcdf25cfa51727f175356fe2ee211136..3f9ae37cb15f239389eeba110b3a7da0280a8381:/sig/types.hpp diff --git a/sig/types.hpp b/sig/types.hpp index 3e8d1f2..54da645 100644 --- a/sig/types.hpp +++ b/sig/types.hpp @@ -1,7 +1,28 @@ +/* Cycript - Optimizing JavaScript Compiler/Runtime + * Copyright (C) 2009-2012 Jay Freeman (saurik) +*/ + +/* GNU Lesser General Public License, Version 3 {{{ */ +/* + * Cycript is free software: you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Cycript 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 Lesser General Public + * License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Cycript. If not, see . +**/ +/* }}} */ + #ifndef SIG_TYPES_H #define SIG_TYPES_H -#include "minimal/stdlib.h" +#include "Standard.hpp" namespace sig { @@ -10,7 +31,8 @@ enum Primitive { union_P = '(', string_P = '*', selector_P = ':', - object_P = '@', + block_P = '?', + object_P = 'W', boolean_P = 'B', uchar_P = 'C', uint_P = 'I', @@ -52,7 +74,7 @@ struct Signature { struct Type { enum Primitive primitive; - char *name; + const char *name; uint8_t flags; union { @@ -62,13 +84,16 @@ struct Type { } data; struct Signature signature; - char *extra; } data; }; struct Type *joc_parse_type(char **name, char eos, bool variable, bool signature); void joc_parse_signature(struct Signature *signature, char **name, char eos, bool variable); +_finline bool IsAggregate(Primitive primitive) { + return primitive == struct_P || primitive == union_P; +} + } #endif/*SIG_TYPES_H*/