summaryrefslogtreecommitdiff
path: root/subversion/bindings/javahl/native/JNIStackElement.h
blob: 61708c32a5a8d168f3697266cfd4668d5c8590e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
 * @copyright
 * ====================================================================
 *    Licensed to the Apache Software Foundation (ASF) under one
 *    or more contributor license agreements.  See the NOTICE file
 *    distributed with this work for additional information
 *    regarding copyright ownership.  The ASF licenses this file
 *    to you under the Apache License, Version 2.0 (the
 *    "License"); you may not use this file except in compliance
 *    with the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing,
 *    software distributed under the License is distributed on an
 *    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *    KIND, either express or implied.  See the License for the
 *    specific language governing permissions and limitations
 *    under the License.
 * ====================================================================
 * @endcopyright
 *
 * @file JNIStackElement.h
 * @brief Interface of the class JNIStackElement
 */

#ifndef JNISTACKELEMENT_H
#define JNISTACKELEMENT_H

#include <jni.h>
#include "JNIUtil.h"

/**
 * Create a stack element on the stack, which will be used to track
 * the entry and exit of a method.  Assumes that there are a local
 * variables named "env" and "jthis" available.
 */
#define JNIEntry(c,m) JNIStackElement se(env, #c, #m, jthis);

/**
 * Create a stack element on the stack, which will be used to track
 * the entry and exit of a static method.  Assumes that there are a
 * local variables named "env" and "jthis" available.
 */
#define JNIEntryStatic(c,m) JNIStackElement se(env, #c, #m, jclazz);


/**
 * This class is used to mark the entry and exit of a method, and can
 * generate a log messages at those points.  The members are used to
 * generate the exit message
 */
class JNIStackElement
{
 public:
  JNIStackElement(JNIEnv *env, const char *clazz,
                  const char *method, jobject jthis);
  virtual ~JNIStackElement();

 private:
  /**
   * The name of the method.
   */
  const char *m_method;

  /**
   * The name of the class.
   */

  const char *m_clazz;

  /**
   * A buffer for the result for jthis.toString to identify the
   * object.
   */
  char m_objectID[2048];
};

#endif // JNISTACKELEMENT_H