Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2008 The Android Open Source Project |
| 3 | * |
| 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | * you may not use this file except in compliance with the License. |
| 6 | * You may obtain a copy of the License at |
| 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. |
| 15 | */ |
| 16 | /* |
| 17 | * String constants to go along with enumerated values. (Pity we don't |
| 18 | * have enumerated constant reflection in C.) These are only needed for |
| 19 | * making the output human-readable. |
| 20 | */ |
| 21 | #include "jdwp/jdwp_constants.h" |
| 22 | |
| 23 | #include <iostream> |
| 24 | |
| 25 | namespace art { |
| 26 | |
| 27 | namespace JDWP { |
| 28 | |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 29 | std::ostream& operator<<(std::ostream& os, const JdwpError& rhs) { |
| 30 | switch (rhs) { |
| 31 | case ERR_NONE: os << "NONE"; break; |
| 32 | case ERR_INVALID_THREAD: os << "INVALID_THREAD"; break; |
| 33 | case ERR_INVALID_THREAD_GROUP: os << "INVALID_THREAD_GROUP"; break; |
| 34 | case ERR_INVALID_PRIORITY: os << "INVALID_PRIORITY"; break; |
| 35 | case ERR_THREAD_NOT_SUSPENDED: os << "THREAD_NOT_SUSPENDED"; break; |
| 36 | case ERR_THREAD_SUSPENDED: os << "THREAD_SUSPENDED"; break; |
| 37 | case ERR_THREAD_NOT_ALIVE: os << "THREAD_NOT_ALIVE"; break; |
| 38 | case ERR_INVALID_OBJECT: os << "INVALID_OBJEC"; break; |
| 39 | case ERR_INVALID_CLASS: os << "INVALID_CLASS"; break; |
| 40 | case ERR_CLASS_NOT_PREPARED: os << "CLASS_NOT_PREPARED"; break; |
| 41 | case ERR_INVALID_METHODID: os << "INVALID_METHODID"; break; |
| 42 | case ERR_INVALID_LOCATION: os << "INVALID_LOCATION"; break; |
| 43 | case ERR_INVALID_FIELDID: os << "INVALID_FIELDID"; break; |
| 44 | case ERR_INVALID_FRAMEID: os << "INVALID_FRAMEID"; break; |
| 45 | case ERR_NO_MORE_FRAMES: os << "NO_MORE_FRAMES"; break; |
| 46 | case ERR_OPAQUE_FRAME: os << "OPAQUE_FRAME"; break; |
| 47 | case ERR_NOT_CURRENT_FRAME: os << "NOT_CURRENT_FRAME"; break; |
| 48 | case ERR_TYPE_MISMATCH: os << "TYPE_MISMATCH"; break; |
| 49 | case ERR_INVALID_SLOT: os << "INVALID_SLOT"; break; |
| 50 | case ERR_DUPLICATE: os << "DUPLICATE"; break; |
| 51 | case ERR_NOT_FOUND: os << "NOT_FOUND"; break; |
| 52 | case ERR_INVALID_MONITOR: os << "INVALID_MONITOR"; break; |
| 53 | case ERR_NOT_MONITOR_OWNER: os << "NOT_MONITOR_OWNER"; break; |
| 54 | case ERR_INTERRUPT: os << "INTERRUPT"; break; |
| 55 | case ERR_INVALID_CLASS_FORMAT: os << "INVALID_CLASS_FORMAT"; break; |
| 56 | case ERR_CIRCULAR_CLASS_DEFINITION: os << "CIRCULAR_CLASS_DEFINITION"; break; |
| 57 | case ERR_FAILS_VERIFICATION: os << "FAILS_VERIFICATION"; break; |
| 58 | case ERR_ADD_METHOD_NOT_IMPLEMENTED: os << "ADD_METHOD_NOT_IMPLEMENTED"; break; |
| 59 | case ERR_SCHEMA_CHANGE_NOT_IMPLEMENTED: os << "SCHEMA_CHANGE_NOT_IMPLEMENTED"; break; |
| 60 | case ERR_INVALID_TYPESTATE: os << "INVALID_TYPESTATE"; break; |
| 61 | case ERR_HIERARCHY_CHANGE_NOT_IMPLEMENTED: os << "HIERARCHY_CHANGE_NOT_IMPLEMENTED"; break; |
| 62 | case ERR_DELETE_METHOD_NOT_IMPLEMENTED: os << "DELETE_METHOD_NOT_IMPLEMENTED"; break; |
| 63 | case ERR_UNSUPPORTED_VERSION: os << "UNSUPPORTED_VERSION"; break; |
| 64 | case ERR_NAMES_DONT_MATCH: os << "NAMES_DONT_MATCH"; break; |
| 65 | case ERR_CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED: os << "CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED"; break; |
| 66 | case ERR_METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED: os << "METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED"; break; |
| 67 | case ERR_NOT_IMPLEMENTED: os << "NOT_IMPLEMENTED"; break; |
| 68 | case ERR_NULL_POINTER: os << "NULL_POINTER"; break; |
| 69 | case ERR_ABSENT_INFORMATION: os << "ABSENT_INFORMATION"; break; |
| 70 | case ERR_INVALID_EVENT_TYPE: os << "INVALID_EVENT_TYPE"; break; |
| 71 | case ERR_ILLEGAL_ARGUMENT: os << "ILLEGAL_ARGUMENT"; break; |
| 72 | case ERR_OUT_OF_MEMORY: os << "OUT_OF_MEMORY"; break; |
| 73 | case ERR_ACCESS_DENIED: os << "ACCESS_DENIED"; break; |
| 74 | case ERR_VM_DEAD: os << "VM_DEAD"; break; |
| 75 | case ERR_INTERNAL: os << "INTERNAL"; break; |
| 76 | case ERR_UNATTACHED_THREAD: os << "UNATTACHED_THREAD"; break; |
| 77 | case ERR_INVALID_TAG: os << "INVALID_TAG"; break; |
| 78 | case ERR_ALREADY_INVOKING: os << "ALREADY_INVOKING"; break; |
| 79 | case ERR_INVALID_INDEX: os << "INVALID_INDEX"; break; |
| 80 | case ERR_INVALID_LENGTH: os << "INVALID_LENGTH"; break; |
| 81 | case ERR_INVALID_STRING: os << "INVALID_STRING"; break; |
| 82 | case ERR_INVALID_CLASS_LOADER: os << "INVALID_CLASS_LOADER"; break; |
| 83 | case ERR_INVALID_ARRAY: os << "INVALID_ARRAY"; break; |
| 84 | case ERR_TRANSPORT_LOAD: os << "TRANSPORT_LOAD"; break; |
| 85 | case ERR_TRANSPORT_INIT: os << "TRANSPORT_INIT"; break; |
| 86 | case ERR_NATIVE_METHOD: os << "NATIVE_METHOD"; break; |
| 87 | case ERR_INVALID_COUNT: os << "INVALID_COUNT"; break; |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 88 | default: |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 89 | os << "JdwpError[" << static_cast<int>(rhs) << "]"; |
Elliott Hughes | 7b3cdfc | 2011-12-08 21:28:17 -0800 | [diff] [blame] | 90 | break; |
| 91 | } |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 92 | return os; |
| 93 | } |
| 94 | |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 95 | std::ostream& operator<<(std::ostream& os, const JdwpEventKind& rhs) { |
| 96 | switch (rhs) { |
| 97 | case EK_SINGLE_STEP: os << "SINGLE_STEP"; break; |
| 98 | case EK_BREAKPOINT: os << "BREAKPOINT"; break; |
| 99 | case EK_FRAME_POP: os << "FRAME_POP"; break; |
| 100 | case EK_EXCEPTION: os << "EXCEPTION"; break; |
| 101 | case EK_USER_DEFINED: os << "USER_DEFINED"; break; |
| 102 | case EK_THREAD_START: os << "THREAD_START"; break; |
| 103 | case EK_THREAD_DEATH: os << "THREAD_DEATH"; break; |
| 104 | case EK_CLASS_PREPARE: os << "CLASS_PREPARE"; break; |
| 105 | case EK_CLASS_UNLOAD: os << "CLASS_UNLOAD"; break; |
| 106 | case EK_CLASS_LOAD: os << "CLASS_LOAD"; break; |
| 107 | case EK_FIELD_ACCESS: os << "FIELD_ACCESS"; break; |
| 108 | case EK_FIELD_MODIFICATION: os << "FIELD_MODIFICATION"; break; |
| 109 | case EK_EXCEPTION_CATCH: os << "EXCEPTION_CATCH"; break; |
| 110 | case EK_METHOD_ENTRY: os << "METHOD_ENTRY"; break; |
| 111 | case EK_METHOD_EXIT: os << "METHOD_EXIT"; break; |
| 112 | case EK_METHOD_EXIT_WITH_RETURN_VALUE: os << "METHOD_EXIT_WITH_RETURN_VALUE"; break; |
| 113 | case EK_MONITOR_CONTENDED_ENTER: os << "MONITOR_CONTENDED_ENTER"; break; |
| 114 | case EK_MONITOR_CONTENDED_ENTERED: os << "MONITOR_CONTENDED_ENTERED"; break; |
| 115 | case EK_MONITOR_WAIT: os << "MONITOR_WAIT"; break; |
| 116 | case EK_MONITOR_WAITED: os << "MONITOR_WAITED"; break; |
| 117 | case EK_VM_START: os << "VM_START"; break; |
| 118 | case EK_VM_DEATH: os << "VM_DEATH"; break; |
| 119 | case EK_VM_DISCONNECTED: os << "VM_DISCONNECTED"; break; |
| 120 | default: |
| 121 | os << "JdwpEventKind[" << static_cast<int>(rhs) << "]"; |
| 122 | break; |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 123 | } |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 124 | return os; |
| 125 | } |
| 126 | |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 127 | std::ostream& operator<<(std::ostream& os, const JdwpModKind& rhs) { |
| 128 | switch (rhs) { |
| 129 | case MK_COUNT: os << "COUNT"; break; |
| 130 | case MK_CONDITIONAL: os << "CONDITIONAL"; break; |
| 131 | case MK_THREAD_ONLY: os << "THREAD_ONLY"; break; |
| 132 | case MK_CLASS_ONLY: os << "CLASS_ONLY"; break; |
| 133 | case MK_CLASS_MATCH: os << "CLASS_MATCH"; break; |
| 134 | case MK_CLASS_EXCLUDE: os << "CLASS_EXCLUDE"; break; |
| 135 | case MK_LOCATION_ONLY: os << "LOCATION_ONLY"; break; |
| 136 | case MK_EXCEPTION_ONLY: os << "EXCEPTION_ONLY"; break; |
| 137 | case MK_FIELD_ONLY: os << "FIELD_ONLY"; break; |
| 138 | case MK_STEP: os << "STEP"; break; |
| 139 | case MK_INSTANCE_ONLY: os << "INSTANCE_ONLY"; break; |
| 140 | case MK_SOURCE_NAME_MATCH: os << "SOURCE_NAME_MATCH"; break; |
| 141 | default: |
| 142 | os << "JdwpModKind[" << static_cast<int>(rhs) << "]"; |
| 143 | break; |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 144 | } |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 145 | return os; |
| 146 | } |
| 147 | |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 148 | std::ostream& operator<<(std::ostream& os, const JdwpStepDepth& rhs) { |
| 149 | switch (rhs) { |
| 150 | case SD_INTO: os << "INTO"; break; |
| 151 | case SD_OVER: os << "OVER"; break; |
| 152 | case SD_OUT: os << "OUT"; break; |
| 153 | default: |
| 154 | os << "JdwpStepDepth[" << static_cast<int>(rhs) << "]"; |
| 155 | break; |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 156 | } |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 157 | return os; |
| 158 | } |
| 159 | |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 160 | std::ostream& operator<<(std::ostream& os, const JdwpStepSize& rhs) { |
| 161 | switch (rhs) { |
| 162 | case SS_MIN: os << "MIN"; break; |
| 163 | case SS_LINE: os << "LINE"; break; |
| 164 | default: |
| 165 | os << "JdwpStepSize[" << static_cast<int>(rhs) << "]"; |
| 166 | break; |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 167 | } |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 168 | return os; |
| 169 | } |
| 170 | |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 171 | std::ostream& operator<<(std::ostream& os, const JdwpSuspendPolicy& rhs) { |
| 172 | switch (rhs) { |
| 173 | case SP_NONE: os << "NONE"; break; |
| 174 | case SP_EVENT_THREAD: os << "EVENT_THREAD"; break; |
| 175 | case SP_ALL: os << "ALL"; break; |
| 176 | default: |
| 177 | os << "JdwpSuspendPolicy[" << static_cast<int>(rhs) << "]"; |
| 178 | break; |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 179 | } |
Elliott Hughes | 42d305e | 2012-01-09 18:05:41 -0800 | [diff] [blame] | 180 | return os; |
| 181 | } |
| 182 | |
| 183 | std::ostream& operator<<(std::ostream& os, const JdwpSuspendStatus& rhs) { |
| 184 | switch (rhs) { |
| 185 | case SUSPEND_STATUS_NOT_SUSPENDED: os << "NOT SUSPENDED"; break; |
| 186 | case SUSPEND_STATUS_SUSPENDED: os << "SUSPENDED"; break; |
| 187 | default: |
| 188 | os << "JdwpSuspendStatus[" << static_cast<int>(rhs) << "]"; |
| 189 | break; |
| 190 | } |
| 191 | return os; |
| 192 | } |
| 193 | |
| 194 | std::ostream& operator<<(std::ostream& os, const JdwpThreadStatus& rhs) { |
| 195 | switch (rhs) { |
| 196 | case TS_ZOMBIE: os << "ZOMBIE"; break; |
| 197 | case TS_RUNNING: os << "RUNNING"; break; |
| 198 | case TS_SLEEPING: os << "SLEEPING"; break; |
| 199 | case TS_MONITOR: os << "MONITOR"; break; |
| 200 | case TS_WAIT: os << "WAIT"; break; |
| 201 | default: |
| 202 | os << "JdwpThreadStatus[" << static_cast<int>(rhs) << "]"; |
| 203 | break; |
| 204 | } |
Elliott Hughes | 872d4ec | 2011-10-21 17:07:15 -0700 | [diff] [blame] | 205 | return os; |
| 206 | } |
| 207 | |
| 208 | } // namespace JDWP |
| 209 | |
| 210 | } // namespace art |