aboutsummaryrefslogtreecommitdiffstats
path: root/test/vpp_igmp.py
diff options
context:
space:
mode:
authorMohsin Kazmi <sykazmi@cisco.com>2018-09-27 15:00:32 +0200
committerNeale Ranns <nranns@cisco.com>2018-09-29 17:06:30 +0000
commit762d83c198c6c24cce4eb94a6d027f520d0b8383 (patch)
treea7e9c4f0cc872642a7e39cc6b2fcefa7d21070d1 /test/vpp_igmp.py
parent539663c401b087e4576e41af35144e73e1907c9d (diff)
vom: Fix the l2 port type in bridge domain
Change-Id: I8aba11142daeacce892ec529c2229ec54ee427e2 Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
Diffstat (limited to 'test/vpp_igmp.py')
0 files changed, 0 insertions, 0 deletions
*/ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#include "yaml-cpp/emitfromevents.h"
#include "yaml-cpp/emitter.h"
#include "yaml-cpp/null.h"
#include <cassert>
#include <sstream>

namespace {
	std::string ToString(YAML::anchor_t anchor) {
		std::stringstream stream;
		stream << anchor;
		return stream.str();
	}
}

namespace YAML
{
	EmitFromEvents::EmitFromEvents(Emitter& emitter): m_emitter(emitter)
	{
	}
	
	void EmitFromEvents::OnDocumentStart(const Mark&)
	{
	}
	
	void EmitFromEvents::OnDocumentEnd()
	{
	}
	
	void EmitFromEvents::OnNull(const Mark&, anchor_t anchor)
	{
		BeginNode();
		EmitProps("", anchor);
		m_emitter << Null;
	}
	
	void EmitFromEvents::OnAlias(const Mark&, anchor_t anchor)
	{
		BeginNode();
		m_emitter << Alias(ToString(anchor));
	}
	
	void EmitFromEvents::OnScalar(const Mark&, const std::string& tag, anchor_t anchor, const std::string& value)
	{
		BeginNode();
		EmitProps(tag, anchor);
		m_emitter << value;
	}
	
	void EmitFromEvents::OnSequenceStart(const Mark&, const std::string& tag, anchor_t anchor)
	{
		BeginNode();
		EmitProps(tag, anchor);
		m_emitter << BeginSeq;
		m_stateStack.push(State::WaitingForSequenceEntry);
	}
	
	void EmitFromEvents::OnSequenceEnd()
	{
		m_emitter << EndSeq;
		assert(m_stateStack.top() == State::WaitingForSequenceEntry);
		m_stateStack.pop();
	}
	
	void EmitFromEvents::OnMapStart(const Mark&, const std::string& tag, anchor_t anchor)
	{
		BeginNode();
		EmitProps(tag, anchor);
		m_emitter << BeginMap;
		m_stateStack.push(State::WaitingForKey);
	}

	void EmitFromEvents::OnMapEnd()
	{
		m_emitter << EndMap;
		assert(m_stateStack.top() == State::WaitingForKey);
		m_stateStack.pop();
	}

	void EmitFromEvents::BeginNode()
	{
		if(m_stateStack.empty())
			return;
		
		switch(m_stateStack.top()) {
			case State::WaitingForKey:
				m_emitter << Key;
				m_stateStack.top() = State::WaitingForValue;
				break;
			case State::WaitingForValue:
				m_emitter << Value;
				m_stateStack.top() = State::WaitingForKey;
				break;
			default:
				break;
		}
	}
	
	void EmitFromEvents::EmitProps(const std::string& tag, anchor_t anchor)
	{
		if(!tag.empty() && tag != "?")
			m_emitter << VerbatimTag(tag);
		if(anchor)
			m_emitter << Anchor(ToString(anchor));
	}
}