• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 
26 #ifndef KJS_BINDINGS_OBJC_UTILITY_H
27 #define KJS_BINDINGS_OBJC_UTILITY_H
28 
29 #include <CoreFoundation/CoreFoundation.h>
30 
31 #include "objc_header.h"
32 #include <runtime/Error.h>
33 #include <runtime/JSObject.h>
34 
35 #ifdef __OBJC__
36 @class NSString;
37 #else
38 class NSString;
39 #endif
40 
41 namespace JSC {
42 namespace Bindings {
43 
44 typedef union {
45     ObjectStructPtr objectValue;
46     bool booleanValue;
47     char charValue;
48     short shortValue;
49     int intValue;
50     long longValue;
51     long long longLongValue;
52     float floatValue;
53     double doubleValue;
54 } ObjcValue;
55 
56 typedef enum {
57     ObjcVoidType,
58     ObjcObjectType,
59     ObjcCharType,
60     ObjcUnsignedCharType,
61     ObjcShortType,
62     ObjcUnsignedShortType,
63     ObjcIntType,
64     ObjcUnsignedIntType,
65     ObjcLongType,
66     ObjcUnsignedLongType,
67     ObjcLongLongType,
68     ObjcUnsignedLongLongType,
69     ObjcFloatType,
70     ObjcDoubleType,
71     ObjcInvalidType
72 } ObjcValueType;
73 
74 class RootObject;
75 
76 ObjcValue convertValueToObjcValue(ExecState*, JSValue, ObjcValueType);
77 JSValue convertNSStringToString(ExecState* exec, NSString *nsstring);
78 JSValue convertObjcValueToValue(ExecState*, void* buffer, ObjcValueType, RootObject*);
79 ObjcValueType objcValueTypeForType(const char *type);
80 
81 bool convertJSMethodNameToObjc(const char *JSName, char *buffer, size_t bufferSize);
82 
83 JSObject *throwError(ExecState *, ErrorType, NSString *message);
84 
85 } // namespace Bindings
86 } // namespace JSC
87 
88 #endif
89