1c55a96383497a772a307b346368133960b02ad03Eric Laurent/*
2c55a96383497a772a307b346368133960b02ad03Eric Laurent *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3c55a96383497a772a307b346368133960b02ad03Eric Laurent *
4c55a96383497a772a307b346368133960b02ad03Eric Laurent *  Use of this source code is governed by a BSD-style license
5c55a96383497a772a307b346368133960b02ad03Eric Laurent *  that can be found in the LICENSE file in the root of the source
6c55a96383497a772a307b346368133960b02ad03Eric Laurent *  tree. An additional intellectual property rights grant can be found
7c55a96383497a772a307b346368133960b02ad03Eric Laurent *  in the file PATENTS.  All contributing project authors may
8c55a96383497a772a307b346368133960b02ad03Eric Laurent *  be found in the AUTHORS file in the root of the source tree.
9c55a96383497a772a307b346368133960b02ad03Eric Laurent */
10c55a96383497a772a307b346368133960b02ad03Eric Laurent
11c55a96383497a772a307b346368133960b02ad03Eric Laurent/*
12c55a96383497a772a307b346368133960b02ad03Eric Laurent * This is the pure C wrapper of the DataLog class.
13c55a96383497a772a307b346368133960b02ad03Eric Laurent */
14c55a96383497a772a307b346368133960b02ad03Eric Laurent
15c55a96383497a772a307b346368133960b02ad03Eric Laurent#include "system_wrappers/interface/data_log_c.h"
16c55a96383497a772a307b346368133960b02ad03Eric Laurent
17c55a96383497a772a307b346368133960b02ad03Eric Laurent#include <string>
18c55a96383497a772a307b346368133960b02ad03Eric Laurent
19c55a96383497a772a307b346368133960b02ad03Eric Laurent#include "system_wrappers/interface/data_log.h"
20c55a96383497a772a307b346368133960b02ad03Eric Laurent
21c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_CreateLog() {
22c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::CreateLog();
23c55a96383497a772a307b346368133960b02ad03Eric Laurent}
24c55a96383497a772a307b346368133960b02ad03Eric Laurent
25c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" void WebRtcDataLog_ReturnLog() {
26c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::ReturnLog();
27c55a96383497a772a307b346368133960b02ad03Eric Laurent}
28c55a96383497a772a307b346368133960b02ad03Eric Laurent
29c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" char* WebRtcDataLog_Combine(char* combined_name, size_t combined_len,
30c55a96383497a772a307b346368133960b02ad03Eric Laurent                                       const char* table_name, int table_id) {
31c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name) return NULL;
32c55a96383497a772a307b346368133960b02ad03Eric Laurent  std::string combined = webrtc::DataLog::Combine(table_name, table_id);
33c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (combined.size() >= combined_len) return NULL;
34c55a96383497a772a307b346368133960b02ad03Eric Laurent  std::copy(combined.begin(), combined.end(), combined_name);
35c55a96383497a772a307b346368133960b02ad03Eric Laurent  combined_name[combined.size()] = '\0';
36c55a96383497a772a307b346368133960b02ad03Eric Laurent  return combined_name;
37c55a96383497a772a307b346368133960b02ad03Eric Laurent}
38c55a96383497a772a307b346368133960b02ad03Eric Laurent
39c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_AddTable(const char* table_name) {
40c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name) return -1;
41c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::AddTable(table_name);
42c55a96383497a772a307b346368133960b02ad03Eric Laurent}
43c55a96383497a772a307b346368133960b02ad03Eric Laurent
44c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_AddColumn(const char* table_name,
45c55a96383497a772a307b346368133960b02ad03Eric Laurent                                       const char* column_name,
46c55a96383497a772a307b346368133960b02ad03Eric Laurent                                       int multi_value_length) {
47c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
48c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::AddColumn(table_name, column_name,
49c55a96383497a772a307b346368133960b02ad03Eric Laurent                                    multi_value_length);
50c55a96383497a772a307b346368133960b02ad03Eric Laurent}
51c55a96383497a772a307b346368133960b02ad03Eric Laurent
52c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertCell_int(const char* table_name,
53c55a96383497a772a307b346368133960b02ad03Eric Laurent                                            const char* column_name,
54c55a96383497a772a307b346368133960b02ad03Eric Laurent                                            int value) {
55c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
56c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, value);
57c55a96383497a772a307b346368133960b02ad03Eric Laurent}
58c55a96383497a772a307b346368133960b02ad03Eric Laurent
59c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertArray_int(const char* table_name,
60c55a96383497a772a307b346368133960b02ad03Eric Laurent                                             const char* column_name,
61c55a96383497a772a307b346368133960b02ad03Eric Laurent                                             const int* values,
62c55a96383497a772a307b346368133960b02ad03Eric Laurent                                             int length) {
63c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
64c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
65c55a96383497a772a307b346368133960b02ad03Eric Laurent}
66c55a96383497a772a307b346368133960b02ad03Eric Laurent
67c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertCell_float(const char* table_name,
68c55a96383497a772a307b346368133960b02ad03Eric Laurent                                              const char* column_name,
69c55a96383497a772a307b346368133960b02ad03Eric Laurent                                              float value) {
70c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
71c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, value);
72c55a96383497a772a307b346368133960b02ad03Eric Laurent}
73c55a96383497a772a307b346368133960b02ad03Eric Laurent
74c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertArray_float(const char* table_name,
75c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const char* column_name,
76c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const float* values,
77c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               int length) {
78c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
79c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
80c55a96383497a772a307b346368133960b02ad03Eric Laurent}
81c55a96383497a772a307b346368133960b02ad03Eric Laurent
82c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertCell_double(const char* table_name,
83c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const char* column_name,
84c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               double value) {
85c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
86c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, value);
87c55a96383497a772a307b346368133960b02ad03Eric Laurent}
88c55a96383497a772a307b346368133960b02ad03Eric Laurent
89c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertArray_double(const char* table_name,
90c55a96383497a772a307b346368133960b02ad03Eric Laurent                                                const char* column_name,
91c55a96383497a772a307b346368133960b02ad03Eric Laurent                                                const double* values,
92c55a96383497a772a307b346368133960b02ad03Eric Laurent                                                int length) {
93c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
94c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
95c55a96383497a772a307b346368133960b02ad03Eric Laurent}
96c55a96383497a772a307b346368133960b02ad03Eric Laurent
97c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertCell_int32(const char* table_name,
98c55a96383497a772a307b346368133960b02ad03Eric Laurent                                              const char* column_name,
99c55a96383497a772a307b346368133960b02ad03Eric Laurent                                              int32_t value) {
100c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
101c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, value);
102c55a96383497a772a307b346368133960b02ad03Eric Laurent}
103c55a96383497a772a307b346368133960b02ad03Eric Laurent
104c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertArray_int32(const char* table_name,
105c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const char* column_name,
106c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const int32_t* values,
107c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               int length) {
108c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
109c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
110c55a96383497a772a307b346368133960b02ad03Eric Laurent}
111c55a96383497a772a307b346368133960b02ad03Eric Laurent
112c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertCell_uint32(const char* table_name,
113c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const char* column_name,
114c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               uint32_t value) {
115c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
116c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, value);
117c55a96383497a772a307b346368133960b02ad03Eric Laurent}
118c55a96383497a772a307b346368133960b02ad03Eric Laurent
119c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertArray_uint32(const char* table_name,
120c55a96383497a772a307b346368133960b02ad03Eric Laurent                                                const char* column_name,
121c55a96383497a772a307b346368133960b02ad03Eric Laurent                                                const uint32_t* values,
122c55a96383497a772a307b346368133960b02ad03Eric Laurent                                                int length) {
123c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
124c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
125c55a96383497a772a307b346368133960b02ad03Eric Laurent}
126c55a96383497a772a307b346368133960b02ad03Eric Laurent
127c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertCell_int64(const char* table_name,
128c55a96383497a772a307b346368133960b02ad03Eric Laurent                                              const char* column_name,
129c55a96383497a772a307b346368133960b02ad03Eric Laurent                                              int64_t value) {
130c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
131c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, value);
132c55a96383497a772a307b346368133960b02ad03Eric Laurent}
133c55a96383497a772a307b346368133960b02ad03Eric Laurent
134c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_InsertArray_int64(const char* table_name,
135c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const char* column_name,
136c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               const int64_t* values,
137c55a96383497a772a307b346368133960b02ad03Eric Laurent                                               int length) {
138c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name || !column_name) return -1;
139c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::InsertCell(table_name, column_name, values, length);
140c55a96383497a772a307b346368133960b02ad03Eric Laurent}
141c55a96383497a772a307b346368133960b02ad03Eric Laurent
142c55a96383497a772a307b346368133960b02ad03Eric Laurentextern "C" int WebRtcDataLog_NextRow(const char* table_name) {
143c55a96383497a772a307b346368133960b02ad03Eric Laurent  if (!table_name) return -1;
144c55a96383497a772a307b346368133960b02ad03Eric Laurent  return webrtc::DataLog::NextRow(table_name);
145c55a96383497a772a307b346368133960b02ad03Eric Laurent}
146