␉{␊ |
␉␉switch (parent->Type) ␊ |
␉␉{␊ |
␉␉␉case AML_CHUNK_NONE:␊ |
␉␉␉case AML_CHUNK_BYTE:␊ |
␉␉␉case AML_CHUNK_WORD:␊ |
␉␉␉case AML_CHUNK_DWORD:␊ |
␉␉␉case AML_CHUNK_QWORD:␊ |
␉␉␉case AML_CHUNK_ALIAS:␊ |
␉␉␉case AML_ONES_OP:␊ |
␉␉␉case AML_BYTE_PREFIX:␊ |
␉␉␉case AML_WORD_PREFIX:␊ |
␉␉␉case AML_DWORD_PREFIX:␊ |
␉␉␉case AML_QWORD_PREFIX:␊ |
␉␉␉case AML_ALIAS_OP:␊ |
␉␉␉␉verbose("aml_add_to_parent: Node doesn't support child nodes!\n");␊ |
␉␉␉␉return false;␊ |
␉␉␉case AML_CHUNK_NAME:␊ |
␉␉␉case AML_NAME_OP:␊ |
␉␉␉␉if (parent->First) {␊ |
␉␉␉␉␉verbose("aml_add_to_parent: Name node supports only one child node!\n");␊ |
␉␉␉␉␉return false;␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_NONE;␊ |
␉␉node->Type = AML_ONES_OP;␊ |
␉␉node->Length = (uint16_t)size;␊ |
␉␉node->Buffer = malloc(node->Length);␊ |
␉␉memcpy(node->Buffer, buffer, node->Length);␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_BYTE;␊ |
␉␉node->Type = AML_BYTE_PREFIX;␊ |
␉␉node->Length = 1;␊ |
␉␉node->Buffer = malloc(node->Length);␊ |
␉␉node->Buffer[0] = value;␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_WORD;␊ |
␉␉node->Type = AML_WORD_PREFIX;␊ |
␉␉node->Length = 2;␊ |
␉␉node->Buffer = malloc(node->Length);␊ |
␉␉node->Buffer[0] = value & 0xff;␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_DWORD;␊ |
␉␉node->Type = AML_DWORD_PREFIX;␊ |
␉␉node->Length = 4;␊ |
␉␉node->Buffer = malloc(node->Length);␊ |
␉␉node->Buffer[0] = value & 0xff;␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_QWORD;␊ |
␉␉node->Type = AML_QWORD_PREFIX;␊ |
␉␉node->Length = 8;␊ |
␉␉node->Buffer = malloc(node->Length);␊ |
␉␉node->Buffer[0] = value & 0xff;␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_SCOPE;␊ |
␉␉node->Type = AML_SCOPE_OP;␊ |
␊ |
␉␉aml_fill_name(node, name);␊ |
␉}␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_NAME;␊ |
␉␉node->Type = AML_NAME_OP;␊ |
␊ |
␉␉aml_fill_name(node, name);␊ |
␉}␊ |
|
␊ |
␉if (node) {␊ |
␉␉unsigned int offset = aml_fill_name(node, name);␊ |
␉␉node->Type = AML_CHUNK_METHOD;␊ |
␉␉node->Type = AML_METHOD_OP;␊ |
␊ |
␉␉node->Length++;␊ |
␉␉node->Buffer[offset] = args;␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_PACKAGE;␊ |
␉␉node->Type = AML_PACKAGE_OP;␊ |
␊ |
␉␉node->Length = 1;␊ |
␉␉node->Buffer = malloc(node->Length);␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_ALIAS;␊ |
␉␉node->Type = AML_ALIAS_OP;␊ |
␊ |
␉␉node->Length = 8;␊ |
␉␉node->Buffer = malloc(node->Length);␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_RETURN;␊ |
␉␉node->Type = AML_RETURN_OP;␊ |
␉␉aml_fill_name(node, name);␊ |
␉}␊ |
␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_RETURN;␊ |
␉␉node->Type = AML_RETURN_OP;␊ |
␉␉aml_add_byte(node, value);␊ |
␉}␊ |
␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_DEVICE;␊ |
␉␉node->Type = AML_EXT_DEVICE_OP;␊ |
␉␉aml_fill_name(node, name);␊ |
␉}␊ |
␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_LOCAL0;␊ |
␉␉node->Type = AML_LOCAL0;␊ |
␉␉node->Length = 1;␊ |
␉}␊ |
␊ |
|
␊ |
␉if (node) {␊ |
␉␉int offset = 0;␊ |
␉␉node->Type = AML_CHUNK_BUFFER;␊ |
␉␉node->Type = AML_BUFFER_OP;␊ |
␉␉node->Length = (uint8_t)(size + 2);␊ |
␉␉node->Buffer = malloc (node->Length);␊ |
␉␉node->Buffer[offset++] = AML_CHUNK_BYTE; //0x0A␊ |
␉␉node->Buffer[offset++] = AML_BYTE_PREFIX; //0x0A␊ |
␉␉node->Buffer[offset++] = (char)size;␊ |
␉␉memcpy(node->Buffer+offset,data, node->Length);␊ |
␉}␊ |
|
␉if (node) {␊ |
␉␉unsigned int offset = 0;␊ |
␉␉unsigned int len = strlen(StringBuf);␊ |
␉␉node->Type = AML_CHUNK_BUFFER;␊ |
␉␉node->Type = AML_BUFFER_OP;␊ |
␉␉node->Length = (uint8_t)(len + 3);␊ |
␉␉node->Buffer = malloc (node->Length);␊ |
␉␉node->Buffer[offset++] = AML_CHUNK_BYTE;␊ |
␉␉node->Buffer[offset++] = AML_BYTE_PREFIX;␊ |
␉␉node->Buffer[offset++] = (char)len;␊ |
␉␉memcpy(node->Buffer+offset, StringBuf, len);␊ |
␉␉node->Buffer[offset+len] = '\0';␊ |
|
␊ |
␉if (node) {␊ |
␉␉int len = strlen(StringBuf);␊ |
␉␉node->Type = AML_CHUNK_STRING;␊ |
␉␉node->Type = AML_STRING_PREFIX;␊ |
␉␉node->Length = (uint8_t)(len + 1);␊ |
␉␉node->Buffer = malloc (len);␊ |
␉␉memcpy(node->Buffer, StringBuf, len);␊ |
|
␉AML_CHUNK* node = aml_create_node(parent);␊ |
␊ |
␉if (node) {␊ |
␉␉node->Type = AML_CHUNK_RETURN;␊ |
␉␉node->Type = AML_RETURN_OP;␊ |
␉␉//aml_add_byte(node, value);␊ |
␉}␊ |
␊ |
|
␉␉}␊ |
␊ |
␉␉switch (node->Type) {␊ |
␉␉␉case AML_CHUNK_NONE:␊ |
␉␉␉case AML_ONES_OP:␊ |
␉␉␉case AML_STORE_OP:␊ |
␉␉␉case AML_CHUNK_LOCAL0:␊ |
␉␉␉case AML_LOCAL0:␊ |
␉␉␉␉node->Size += node->Length;␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_METHOD:␊ |
␉␉␉case AML_CHUNK_SCOPE:␊ |
␉␉␉case AML_CHUNK_BUFFER:␊ |
␉␉␉case AML_METHOD_OP:␊ |
␉␉␉case AML_SCOPE_OP:␊ |
␉␉␉case AML_BUFFER_OP:␊ |
␉␉␉␉node->Size += 1 + node->Length;␊ |
␉␉␉␉node->Size += aml_get_size_length(node->Size);␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_DEVICE:␊ |
␉␉␉case AML_EXT_DEVICE_OP:␊ |
␉␉␉␉node->Size += 2 + node->Length;␊ |
␉␉␉␉node->Size += aml_get_size_length(node->Size);␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_PACKAGE:␊ |
␉␉␉case AML_PACKAGE_OP:␊ |
␉␉␉␉node->Buffer[0] = child_count;␊ |
␉␉␉␉node->Size += 1 + node->Length;␊ |
␉␉␉␉node->Size += aml_get_size_length(node->Size);␊ |
␉␉␉␉break;␊ |
␉␉␉␉␊ |
␉␉␉case AML_CHUNK_BYTE:␊ |
␉␉␉case AML_BYTE_PREFIX:␊ |
␉␉␉␉if (node->Buffer[0] == 0x0 || node->Buffer[0] == 0x1) {␊ |
␉␉␉␉␉node->Size += node->Length;␊ |
␉␉␉␉} else {␊ |
|
␉␉␉␉}␊ |
␉␉␉␉break;␊ |
␉␉␉␉␊ |
␉␉␉case AML_CHUNK_WORD:␊ |
␉␉␉case AML_CHUNK_DWORD:␊ |
␉␉␉case AML_CHUNK_QWORD:␊ |
␉␉␉case AML_CHUNK_ALIAS:␊ |
␉␉␉case AML_CHUNK_NAME:␊ |
␉␉␉case AML_CHUNK_RETURN:␊ |
␉␉␉case AML_CHUNK_STRING:␊ |
␉␉␉case AML_WORD_PREFIX:␊ |
␉␉␉case AML_DWORD_PREFIX:␊ |
␉␉␉case AML_QWORD_PREFIX:␊ |
␉␉␉case AML_ALIAS_OP:␊ |
␉␉␉case AML_NAME_OP:␊ |
␉␉␉case AML_RETURN_OP:␊ |
␉␉␉case AML_STRING_PREFIX:␊ |
␉␉␉␉node->Size += 1 + node->Length;␊ |
␉␉␉␉break;␊ |
␉␉}␊ |
|
␉␉AML_CHUNK* child = node->First;␊ |
␊ |
␉␉switch (node->Type) {␊ |
␉␉␉case AML_CHUNK_NONE:␊ |
␉␉␉case AML_ONES_OP:␊ |
␉␉␉␉offset = aml_write_buffer(node->Buffer, node->Length, buffer, offset);␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_LOCAL0:␊ |
␉␉␉case AML_LOCAL0:␊ |
␉␉␉case AML_STORE_OP:␊ |
␉␉␉␉offset = aml_write_byte(node->Type, buffer, offset);␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_DEVICE:␊ |
␉␉␉␉offset = aml_write_byte(AML_CHUNK_OP, buffer, offset);␊ |
␉␉␉case AML_EXT_DEVICE_OP:␊ |
␉␉␉␉offset = aml_write_byte(AML_EXT_OP, buffer, offset);␊ |
␉␉␉␉offset = aml_write_byte(node->Type, buffer, offset);␊ |
␉␉␉␉offset = aml_write_size(node->Size-2, buffer, offset);␊ |
␉␉␉␉offset = aml_write_buffer(node->Buffer, node->Length, buffer, offset);␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_SCOPE:␊ |
␉␉␉case AML_CHUNK_METHOD:␊ |
␉␉␉case AML_CHUNK_PACKAGE:␊ |
␉␉␉case AML_CHUNK_BUFFER:␊ |
␉␉␉case AML_SCOPE_OP:␊ |
␉␉␉case AML_METHOD_OP:␊ |
␉␉␉case AML_PACKAGE_OP:␊ |
␉␉␉case AML_BUFFER_OP:␊ |
␉␉␉␉offset = aml_write_byte(node->Type, buffer, offset);␊ |
␉␉␉␉offset = aml_write_size(node->Size-1, buffer, offset);␊ |
␉␉␉␉offset = aml_write_buffer(node->Buffer, node->Length, buffer, offset);␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_BYTE:␊ |
␉␉␉case AML_BYTE_PREFIX:␊ |
␉␉␉␉if (node->Buffer[0] == 0x0 || node->Buffer[0] == 0x1) {␊ |
␉␉␉␉␉offset = aml_write_buffer(node->Buffer, node->Length, buffer, offset);␊ |
␉␉␉␉} else {␊ |
|
␉␉␉␉}␊ |
␉␉␉␉break;␊ |
␊ |
␉␉␉case AML_CHUNK_WORD:␊ |
␉␉␉case AML_CHUNK_DWORD:␊ |
␉␉␉case AML_CHUNK_QWORD:␊ |
␉␉␉case AML_CHUNK_ALIAS:␊ |
␉␉␉case AML_CHUNK_NAME:␊ |
␉␉␉case AML_CHUNK_RETURN:␊ |
␉␉␉case AML_CHUNK_STRING:␊ |
␉␉␉case AML_WORD_PREFIX:␊ |
␉␉␉case AML_DWORD_PREFIX:␊ |
␉␉␉case AML_QWORD_PREFIX:␊ |
␉␉␉case AML_ALIAS_OP:␊ |
␉␉␉case AML_NAME_OP:␊ |
␉␉␉case AML_RETURN_OP:␊ |
␉␉␉case AML_STRING_PREFIX:␊ |
␉␉␉␉offset = aml_write_byte(node->Type, buffer, offset);␊ |
␉␉␉␉offset = aml_write_buffer(node->Buffer, node->Length, buffer, offset);␊ |
␉␉␉␉break;␊ |