** Copyright (C) 2001-2023 Zabbix SIA
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** (at your option) any later version.
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Name string `json:"name"`
Body string `json:"expression"`
Type *int `json:"expression_type"`
Delimiter *string `json:"exp_delimiter"`
Mode *int `json:"case_sensitive"`
expressions []*Expression
func SortExpressions(expressions []*Expression) {
sort.Slice(expressions, func(i, j int) bool {
if expressions[i].Name != expressions[j].Name {
return expressions[i].Name < expressions[j].Name
if expressions[i].Body != expressions[j].Body {
return expressions[i].Body < expressions[j].Body
if *expressions[i].Type != *expressions[j].Type {
return *expressions[i].Type < *expressions[j].Type
if *expressions[i].Mode != *expressions[j].Mode {
return *expressions[i].Mode < *expressions[j].Mode
return *expressions[i].Delimiter < *expressions[j].Delimiter