mirror of
git://git.psyc.eu/libpsyc
synced 2024-08-15 03:19:02 +00:00
PsycOperator instead of char
let the parser return PsycOperator instead of char. Move the type definitions PsycOperator and PsycStateOp to types.rs because they are commonly used.
This commit is contained in:
parent
99b86d3faa
commit
6bdcd1273b
7 changed files with 35 additions and 33 deletions
|
@ -32,6 +32,6 @@ pub use text::Text;
|
|||
pub use text_types::SubstitutionResult;
|
||||
pub use uniform::Uniform;
|
||||
pub use uniform_types::{UniformParseError, PsycScheme, PsycEntity};
|
||||
pub use packet_types::{PsycOperator, PsycStateOp};
|
||||
pub use types::{PsycOperator, PsycStateOp};
|
||||
pub use variable::{RoutingVariable, EntityVariable, Variable};
|
||||
pub use variable_types::{PsycRoutingVar, PsycType};
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use types::PsycString;
|
||||
use types::{PsycString, PsycOperator, PsycStateOp};
|
||||
use packet_types::*;
|
||||
use packet_id::PacketId;
|
||||
use util;
|
||||
|
|
|
@ -43,24 +43,6 @@ pub enum PsycPacketId {
|
|||
PSYC_PACKET_ID_ELEMS = 5,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone)]
|
||||
#[repr(C)]
|
||||
pub enum PsycOperator {
|
||||
PSYC_OPERATOR_SET = ':' as _,
|
||||
PSYC_OPERATOR_ASSIGN = '=' as _,
|
||||
PSYC_OPERATOR_AUGMENT = '+' as _,
|
||||
PSYC_OPERATOR_DIMINISH = '-' as _,
|
||||
PSYC_OPERATOR_UPDATE = '@' as _,
|
||||
PSYC_OPERATOR_QUERY = '?' as _,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
pub enum PsycStateOp {
|
||||
PSYC_STATE_NOOP = 0,
|
||||
PSYC_STATE_RESET = '=' as _,
|
||||
PSYC_STATE_RESYNC = '?' as _,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
pub struct PsycElem {
|
||||
pub elem_type: PsycString,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use types::PsycString;
|
||||
use types::{PsycString, PsycOperator};
|
||||
use parser_types::*;
|
||||
use util;
|
||||
use std::mem;
|
||||
|
@ -50,7 +50,7 @@ impl PsycParser {
|
|||
pub fn parse<'a>(&mut self, buffer: &'a [u8]) -> Result<PsycParserResult<'a>, PsycParserError> {
|
||||
let state_ptr = &mut self.state as *mut PsycParseState;
|
||||
let buffer_ptr = buffer.as_ptr() as *const c_char;
|
||||
let mut operator = '\0';
|
||||
let mut operator = PsycOperator::PSYC_OPERATOR_SET;
|
||||
let mut name: PsycString;
|
||||
let mut value: PsycString;
|
||||
unsafe {
|
||||
|
@ -60,7 +60,7 @@ impl PsycParser {
|
|||
}
|
||||
name = mem::uninitialized();
|
||||
value = mem::uninitialized();
|
||||
let operator_ptr = &mut operator as *mut char as *mut c_char;
|
||||
let operator_ptr = &mut operator as *mut PsycOperator as *mut c_char;
|
||||
let name_ptr = &mut name as *mut PsycString;
|
||||
let value_ptr = &mut value as *mut PsycString;
|
||||
let parse_result = psyc_parse(state_ptr, operator_ptr, name_ptr, value_ptr);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#![allow(non_camel_case_types)]
|
||||
use types::PsycString;
|
||||
use types::{PsycString, PsycOperator};
|
||||
|
||||
enum PsycPart { }
|
||||
enum PsycListPart { }
|
||||
|
@ -272,17 +272,17 @@ pub enum PsycParserResult<'a> {
|
|||
Complete,
|
||||
InsufficientData,
|
||||
RoutingModifier {
|
||||
operator: char,
|
||||
operator: PsycOperator,
|
||||
name: &'a [u8],
|
||||
value: &'a [u8]
|
||||
},
|
||||
EntityModifier {
|
||||
operator: char,
|
||||
operator: PsycOperator,
|
||||
name: &'a [u8],
|
||||
value: &'a [u8]
|
||||
},
|
||||
EntityModifierStart {
|
||||
operator: char,
|
||||
operator: PsycOperator,
|
||||
name: &'a [u8],
|
||||
value_part: &'a [u8]
|
||||
},
|
||||
|
|
|
@ -35,3 +35,23 @@ impl PsycBool {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, PartialEq)]
|
||||
#[repr(C)]
|
||||
pub enum PsycOperator {
|
||||
PSYC_OPERATOR_SET = ':' as _,
|
||||
PSYC_OPERATOR_ASSIGN = '=' as _,
|
||||
PSYC_OPERATOR_AUGMENT = '+' as _,
|
||||
PSYC_OPERATOR_DIMINISH = '-' as _,
|
||||
PSYC_OPERATOR_UPDATE = '@' as _,
|
||||
PSYC_OPERATOR_QUERY = '?' as _,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
pub enum PsycStateOp {
|
||||
PSYC_STATE_NOOP = 0,
|
||||
PSYC_STATE_RESET = '=' as _,
|
||||
PSYC_STATE_RESYNC = '?' as _,
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ fn test_parse() {
|
|||
let test_data = ":_target\tpsyc://ve.symlynx.com/@blog\n\n?\n|\n".to_string().into_bytes();
|
||||
|
||||
let expected = vec![PsycParserResult::RoutingModifier{
|
||||
operator: ':',
|
||||
operator: PsycOperator::PSYC_OPERATOR_SET,
|
||||
name: "_target".as_bytes(),
|
||||
value: "psyc://ve.symlynx.com/@blog".as_bytes(),
|
||||
},
|
||||
|
@ -35,7 +35,7 @@ fn test_incomplete() {
|
|||
let test_data2 = "lurchi".to_string().into_bytes();
|
||||
|
||||
let expected = vec![PsycParserResult::EntityModifierStart {
|
||||
operator: ':',
|
||||
operator: PsycOperator::PSYC_OPERATOR_SET,
|
||||
name: b"_nick",
|
||||
value_part: b""
|
||||
},
|
||||
|
@ -58,13 +58,13 @@ fn test_insufficient() {
|
|||
|
||||
let expected = vec![PsycParserResult::InsufficientData,
|
||||
PsycParserResult::RoutingModifier {
|
||||
operator: ':',
|
||||
operator: PsycOperator::PSYC_OPERATOR_SET,
|
||||
name: b"_target",
|
||||
value: b"psyc://ve.symlynx.com/@blog"
|
||||
},
|
||||
PsycParserResult::InsufficientData,
|
||||
PsycParserResult::EntityModifier{
|
||||
operator: ':',
|
||||
operator: PsycOperator::PSYC_OPERATOR_SET,
|
||||
name: b"_nick",
|
||||
value: b"lurchi"
|
||||
},
|
||||
|
@ -92,14 +92,14 @@ fn test_multiple() {
|
|||
let test_data = b":_target\tpsyc://ve.symlynx.com/@blog\n\n?\n|\n:_target\tpsyc://ve.symlynx.com/@blog\n\n_test_method\n|\n";
|
||||
|
||||
let expected = vec![PsycParserResult::RoutingModifier {
|
||||
operator: ':',
|
||||
operator: PsycOperator::PSYC_OPERATOR_SET,
|
||||
name: b"_target",
|
||||
value: b"psyc://ve.symlynx.com/@blog"
|
||||
},
|
||||
PsycParserResult::StateSync,
|
||||
PsycParserResult::Complete,
|
||||
PsycParserResult::RoutingModifier {
|
||||
operator: ':',
|
||||
operator: PsycOperator::PSYC_OPERATOR_SET,
|
||||
name: b"_target",
|
||||
value: b"psyc://ve.symlynx.com/@blog"
|
||||
},
|
||||
|
|
Loading…
Reference in a new issue